若有定义:int a[2][3]={2,4,6,8,10,12};则*(&a[0][0]+2*2+1)的值是

2024-11-25 00:12:28
推荐回答(3个)
回答1:

答案是12,我亲自调试了一下,没问题的。

解释:&a[0][0]表示数组a的第一个元素的地址,数组元素存储在内存中一片连续的区域里,所以数组元素的地址加1则指向下一元素地址,多维数组也是一样。因此括号里面的表达式就是a[5](实际上这里没有a[5],而是第5+1=6个元素,即a[2][3])的地址,前面再加上一个*就表示该地址对应存储单元所存储的内容了,就是12。

回答2:

6
&a[0][0]+2*2+1=&a[0][0]+5
一般一个int型数在32位机里面是4个字节,正好指到6的初始地址

回答3:

12
实际上是*(&a[0][0]+5),即数组a的第6个元素