数组下标访问
Q:int A[2][3]={1,2,3,4,5,6};,则A[1][0]和*(*(A+1)+1)的值分别是(A)
A、4 5 B、4 3 C、3 5 D、3 4
A:假设给一个一维数组 int a[5];首先要明白 a 和 &a 的意思,他们地址值一样:
可以把a理解江苏的省会南京市(即江苏省城市排名中的第一个,对应数组中的第一个元素),&a理解为江苏省;那么a+1的值就是江苏省里的其他市,比如苏州市;&a+1理解为安徽的邻省比如安徽省,所以&a+1可能就输出一个不确定的数了。
在二维数组里也是一样,int A[2][3](这个数组其实可以看做有两个一维数组,每个一维数组里有3个元素,a[1][2]就是指向第二个一维数组的第三个元素),A+1的话代表A[0](这是二维数组里的第一个含有3个元素的一维数组)下一个的一维数组A[1],而&a+1就是一个不确定的数了;那么(1)A[1][0]就是4;*(*(A+1)+1);*(A+1)指向a[1]这个一维数组,也即指向4,然后+1(加4个字节)就是指向下一个元素5,然后*运算就是输出5。