CoolJoJo 发表于 2019-8-21 21:24:57

c语言指针运算问题

如图,1个int 不该占用4字节吗,为什么这里答案是5

micolar 发表于 2019-8-21 21:45:51

因为它们都是int类型指针
*(a+1) 它并不是地址加一是加4

你要的20的结果应该是这样的
printf("%d",(int)q - (int)p);

micolar 发表于 2019-8-21 21:53:48

这跟浮点类型和整型类型差不多

4/3 = 1
4.0/3 = 4.0/3.0 = 1.33333
这两个类型编译器会帮我们转换 只是我们写久了觉得两个之间可以相互运算
严格来说是错误的写法
指针类型没跟整型类型有强制转换 也就是说(int)q - p 编译器会报错

我就是个弟弟 发表于 2019-8-22 16:27:51

int 不是4个字节是sizeof (int) 大小.
还有输出确实是5,百度指针运算。
页: [1]
查看完整版本: c语言指针运算问题