int a[3][4];
a[0][0] a[0][1] a[0][2] a[0][3]
a[1][0] a[1][1] a[1][2] a[1][3]
a[2][0] a[2][1] a[2][2] a[2][3]
对于二维数组的理解,可以这样认为:
(1) a是数组名,包含三个元素
a[0] a[1] a[2]
可以得出结论:
(2) 每个元素a[i]又是一个一维数组,包含四个元素
如a[0]中包含a[0][0] a[0][1] a[0][2] a[0][3]四个元素
可以得出结论:(第0行视为一维数组)
两个重要概念:行指针和列指针。
行指针:指的是一整行,不指向具体元素。
列指针:指的是一行中某个具体元素。
可以将列指针理解为行指针的具体元素,行指针理解为列指针的地址。
那么两个概念之间的具体转换是:
*行指针----列指针
&列指针----行指针
根据以上转换公式:
对于元素a[1][2],其地址用列指针表示为a[1]+2,等价表示为*(a+1)+2,那么内容是*(*(a+1)+2);