a[3][4]是一个二维数组,
怎么理解 *a ,它是行指针还是列指针 ,为什么 *(a+1)与 a+1 的地址相同?
a代表二维元素首行一维元素的地址,不具体指向某个元素,是个行指针。
a是一个列指针,a==(a+0)+0相同,代表第0行第0列的地址。理解:(a+i)+j代表第i行第j列的元素的地址,所以是一个列指针。
a+1就是第一行第0个元素的地址
*(a+1)== *(a+1) + 0 就是 第一行第0个元素的地址 ,所以地址码是相同的。
a为二维指针,*a为一维指针
所以
a[i] :为指向二维数组第i行的首成员地址的指针
*(a+i): 为指向二维数组第i行的首成员地址的指针
所以这两个指针指向地址是相同的
二维数组其实就是一维数组,只不过数组中每一个元素都是一个一维数组。