二維數組名(如a)是指向行的。因此a+1中的的“1”代表一行中全部元素所占的字節數。一維數組名(如a[0],a[1])是指向列元素的。a[0]+1中的“1”代表一個元素所占的字節數。
在行指針前面加一個*就轉換成列指針。例如a和a+1它們是行指針,在它們前面加一個*,就是*a和*(a+1),它們就成為列指針,分別指向a數組0行0列的元素和1行0列元素。反之,在列指針前面加&,就成為行指針。例如a[0]是指向0行0列元素的列指針,在它前面加一個&,得&a[0],由於a[0]與*(a=0)等價,因此&a[0]與&*a等價,也就是與a等價,它指向二維數組的0行。
1; a:第0行首地址,*a:0行0列元素地址
2; a[0]<=>*(a+0):0行0列元素地址;
3;&a[0]:0行首地址 &a[0][0]:0行0列元素地址;
4;a[1] :1行0列元素地址 a+1:1行首地址;
5;&a[1][0];<=>*(a+1)=0:1行0列元素地址;
6;a[2]<=>*(a+2):2行0列元素;
7:&a[2]<=>a+2:第2行首地址;
8:a[1][0]<=>*(*(a+1)+0:1行0列元素的“值“(特別注意)
特別注意的是:a+i=a[i]=*(a+i)=&a[i]=&a[i][0]:他們的地址的值是相等的!