二维数组又包含多个一维数组,a指向第一个一维数组的首地址就还是地址。
a+bai1应该是 (a+0)+1
这里的a是二维数组中的二级指针
数组名为a[0]的一维数组(表示行)
也是数组名为a的一维数组(表示列)
后面的1表示行数组移动1行
0表示列的移动
所以是1行0列的地址
*(a+1)中a是二级指针
取值二级指针是一级指针
一级指针指向的一维数组(二维数组中的行)
一维数组移动一位只能是向下移动也就是行
所以就是 第一行的首地址,也就等于二维数组中,第一行零列的地址。
扩展资料:
二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:
LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t
按“列优先顺序”存储时,地址计算为:
LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t
存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节 [1]
参考资料来源:百度百科-二维数组
额 没看懂
追答就比方说, 一头猪吃了一颗草, 然后一条狼把那头猪吃了(整个), 然后人去解剖那只狼, 解剖了一层发现了一头猪, 然后又解剖, 又发现了一颗草.
这和那是一个道理.
int a[10][20], 它定义了一个长度为10的数组, 其中数组中的每个元素又是一个长度为20的数组, 这个数组的每个元素是int型.
还可以理解成一个班里有几组, 然后组再往下的才是人. 一个班是一个集体, 一个组也是一个小集体.