想知道为什么这样做 我不理解数组
问题描述:
3.若二维数组a有m行n列,则下面能够正确引用元素a[i][]的为: C 。
A)(a+jn+i) B) (a+jn+j)
C)((a+i)+j) D)*(*a+i)+j 求解答
过程
答
对于一维数组int a[5],表示数组里装int类型的元素,a表示第一个元素的地址,所以有第3个元素的地址是:a+2,第3个元素的值是:*(a+2)
对于二维数组int a[5][5],表示数组里装int类型的元素,a表示第一个元素的地址,获取第一个元素的值即为a,此时a => int,而要获得“第一个元素(第一行)的第三个属性(第三列)”,这个时候把a看成上面举例的一维数组中的a,即有一维数组取第3个元素的地址是a+2,故“第一个元素(第一行)的第三个属性(第三列)”的地址是(a) + 2,而要获得其值,只要*( *(a) + 2) 就可以了,这样就获得了第1行,第三列的元素值。
所以要获得a[i][j],也就是获得第i行,即:*(a + i),获得第j列,即:*( *(a + i) + j)