二维数组的元素访问问题?
对于二维数组中的元素a[i][j]的访问问题:假设定义了一个二维数组:
int a[8][9];
则对它的访问方法有:
*(*(a+i)+j)
*(a+3*i+j)
对于第二种访问,a可以看作二维数组首地址,通过加整数可以访问a[i][j]元素,但是第一种访问,尤其是*(*(a+i)+j)中的*(a+i)不太明白(首地址加上i后,通过*,得到的不是具体元素值吗?,怎么会再加j呢?),哪位高手指点一下,谢谢!!!
这么看
a是二维数组首地址
二维数组可以看成一维数组的一维数组
a可以理解为一维数组的一维数组的第一个元素的首地址
a+i就把内部的一维数组向下移i个
即指向外部一维数组的首地址(第i个外部数组)
*(a+i)再加上j
即为这个内部一维数组的i个元素所表示的外部一维数组的第j个元素
再用*( ),就是取这里的值了
a->[1]->[1][2][][][][j][][]
[2]->[][][][][][]
[i]->[][][][][][](有9个)
(有8列)
我表达的够清楚的了吧