int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
二维数组在内存中是按行存储的。如下图所示, ‘
二维数组可以看做是一个特殊的一维数组,例如数组a就可以看做是一个有三个元素a[0],a[1],a[2]的数组(所以a+1指向第二行a[1]行(a+1代表指向第二行的指针
*(a+1)才代表第二行的首地址))
行指针代表的是指向这一行的首地址的指针
列指针就是这一列的首地址 eg:a[0]又是一个数组包含四个元素a[0][0],a[0][1],a[0][2],a[0][3]
a[0]代表第一列的首地址,即a[0][0]的地址。
a[0]+1 代表第二列,即a[0][1]所在列 2,6,10那一列
注意:行指针是指向这一行首地址的指针,而列指针就是这一列的首地址
*行指针 == 这一行的首地址 *列指针 == 这一列的第一个元素的值。
**行指针 == 这一行的第一个元素的值
a[0] 1 2 3 4
a[1] 5 6 7 8
a[2] 9 10 11 12
a代表指向第0行的首地址的指针 即*a代表 1的首地址。
a+1代表指向第1行的首地址 的指针 即 *(a+1)代表5的首地址
a+2代表第二行的首地址。 即 *(a+2)9的首地址
a[0]代表第0列的首地址 即1
a[0]+1 代表第1列的首地址 即2
a[0]+2 代表第2列的首地址 即3
a[0]+3 代表第3列的首地址 即4
|
|