int a[3][2] = { 1,2,3,4,5,6 }, (*p)[2]; p = a; printf("%d尀n",a); printf("%d,%d",*a,*a[0]); }

2024-11-18 13:43:37
推荐回答(5个)
回答(1):

二维数组的首地址是二级指针,二级指针就是指针的指针,意思就是一个指针指向了另一个指针。
假如:int **b , *a; b = &a; 所以*b中存放的是指针a指向的地址值, b就是a的地址值。
所以这里的**a 和*a就是这个道理。这里*a就是第一行首地址的地址值

回答(2):

二维数组可以当成每个元素都是一个数组的一维数组
比如a[3][2] 可以当作一个一维数组a[3], 但是a[3]的每个元素都是一个一维数组..
那么就好理解了 *a是a[0],但是a[0]自身是一个一维数组,并不是一个数
所以*a[0], 或者**a 才是这个一维数组的首个元素的值

回答(3):

a是一个二维数组的首地址,*a是对a相当于进行了一次降维,所以*a是一维数组的首地址,也就是a[0],这么说吧你可以把a[3][2]看成这样子{ {a[0][0],a[0][1],a[0][2],}, {a[1][0],a[1][1],a[1][2],} {a[2][0],a[2][1],a[2][2]} },所以a指向的是这一整个数组,*a指向才是数组里的一个元素,所以再对*a进行*运算,也就是**a,才会是第一元素的值,如果不懂欢迎追问哦。

回答(4):

你这什么,题目看不懂

回答(5):

二维数组不应该是**a才能取到1吗?