C语言void指针的运算操作[小知识]
2012-11-05 22:23
429 查看
void *p; p++; ...
问:如果p的值为0x7f6c5b30,执行完p++,p的值为多少?
如果是char *p,答案是0x7f6c5b31;
如果是int *p,答案可能是0x7f6c5b32(如16bit DSP),可能是0x7f6c5b34(如32bit winxp),可能是0x7f6c5b38(如64bit Linux SUSE);
如果是void *p呢?
ANSI C 规定,不可以对void指针进行运算操作,因为我们不知道指针指向的数据类型大小,无法进行偏移;
但,
GNU规定,void指针的运算操作与char型保持一致;
因此,为了程序的可移植性,我们需要在处理void指针运算时一律转换为char型处理,例如:
void *p; ((char *)p)++; //通过这种手段控制p的偏移
相关文章推荐
- C语言数组和指针的理解_在取地址运算上的操作_指针加减操作_a 和&a 的区别
- C语言——通过指针如何操作字符串——储存和运算
- 学习C语言_指针_6_指针变量的运算
- C语言中的指针操作
- 容易忘记指针运算操作
- C语言void及void指针深层探索
- 【C语言复习(二十七)】野指针和内存操作分析
- C语言:断言,指针的算数运算
- 《C语言及程序设计》实践项目——指针及其运算
- C语言指针系列三——指针运算本质
- C语言不用指针只用数组和移位操作将二进制转化为十进制IEEE32浮点数
- c语言学习之位运算知识总结和实例分析
- C语言中关于数组、指针以及函数的一些基本知识
- 关于c语言和C++中void和void*指针解析
- C语言的指针、链表的原理和各类操作
- C语言02 - 指针运算、数组与指针、指针变量名、指针与函数参数、指针函数、函数指针、二级指针
- C语言指针的运算
- 关于C语言中文件操作的一些知识(小白刚体验)
- C语言:使用指针操作二维数组
- C语言的指针、链表的原理和各类操作