• 3124阅读
  • 1回复

Question 11.24:Why can't I perform arithmetic on a void * pointer? [复制链接]

上一主题 下一主题
离线那个谁
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2013-07-19
Q: Why can't I perform arithmetic on a void * pointer? A: The compiler doesn't know the size of the pointed-to objects. (Remember that pointer arithmetic is always in terms of the pointed-to size; see also question 4.4.) Therefore, arithmetic on void *'s is disallowed (though some compilers allow it as an extension). Before performing arithmetic, convert the pointer either to char * or to the pointer type you're trying to manipulate (but see also questions 4.5 and 16.7).    
离线那个谁

只看该作者 沙发  发表于: 2013-07-19
问题:为什么我不能对void *类型的指针进行算术操作?
回答:编译器不知道所指向的对象的大小(要记住指针运算总是要依赖所指向的对象的大小的;参考问题4.4)。因此基于void *类型的指针的运算是不被允许的(尽管一些编译器作为扩展是允许的)。在操作运算之前,要将指针要么转换为char *类型的或者你想要操作的指针的类型(也可以参考问题4.5和16.7)。
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个