数组下标访问

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。

posted @ 2016-05-24 16:50  程序员姜戈  阅读(423)  评论(0编辑  收藏  举报