2技能封走位 发表于 2020-1-16 22:09:49

数组地址的一些有意思的问题

int arr={{1,5},{2,4},{3,6},{7,8},{9,0}};
printf("arr:%p,&arr:%p,&arr:%p,&arr:%p\n",arr,&arr,&arr,&arr);
printf("&arr:%p,&arr:%p\n",&arr+1,&arr+1);
运行结果:
arr:0019FF08,&arr:0019FF08,&arr:0019FF08,&arr:0019FF0C
&arr:0019FF10,&arr:0019FF0C
问题在于&arr如何与&arr等价的
并且他们两个地址相同但+1后前者加8个字节,后者加4个字节
可能比较绕,希望有人回答

zltzlt 发表于 2020-1-17 08:15:18

召唤师 发表于 2020-1-17 08:41:18

召唤师 发表于 2020-1-17 08:42:15

疑问是啥老铁

sunrise085 发表于 2020-1-17 09:22:22

这问题提问的。。。。。不回答就不能看问题,不看问题又怎么回答?

sunrise085 发表于 2020-1-17 09:39:34


看图,a、a和a地址是一样的,a和a地址是一样的。int类型长度是4个字节,因此a到a,地址字节数+4,而从a到a,越过的是两个int,所以字节数+8。

2技能封走位 发表于 2020-1-17 10:51:07

sunrise085 发表于 2020-1-17 09:39
看图,a、a和a地址是一样的,a和a地址是一样的。int类型长度是4个字节,因此a到 ...

感谢老铁,回答的很详细
页: [1]
查看完整版本: 数组地址的一些有意思的问题