二维数组指针问题
int a[] = {1,2,3,4,5,6};//printf("%d",a);
int (*p) = a;
printf("%d\n",sizeof(p));
printf("%p\n",*(p));
printf("%p\n",*(p+1));
printf("%p\n",*(p+2));
为什么3个地址之间不是8个字节呢?
本帖最后由 xiaosi4081 于 2021-7-21 17:35 编辑
可以通过这里的道理思考:
https://www.zhihu.com/question/353129933
计算机里面不一定是以8位字节存储的,也有16字节,32字节,64字节
8位字节为1Byte
16位字节为2Byte
而且,你图片中的地址为16进制,肯定是16位 是八个啊
这是16进制
10H =16 0x10 - 0x08 等于几?等于 2 吗?
万千只cnm 发表于 2021-7-21 17:33
是八个啊
这是16进制
10H =16
对对对,我这菜鸟还是没脱离10进制思维呢{:10_261:} 人造人 发表于 2021-7-21 17:33
0x10 - 0x08 等于几?等于 2 吗?
对对对,我这菜鸟还是没脱离10进制思维呢{:10_261:} dysow 发表于 2021-7-21 17:43
对对对,我这菜鸟还是没脱离10进制思维呢
能给个最佳嘛{:5_91:} 这。。 p是指向求组的指针吧,步长为两个元素。
记忆中 int 是平台无关的(不太确定),long 是平台相关的,4 或 8 字节。long long 固定为 8 字节。
回到你的代码 p+1一次前进2个int ,是8字节。你打印出来具体值就知道了。
页:
[1]