先給出結論,便於以后查閱:
首先給出幾個定義:
typedef int (*p1x4)[4];//定義數據類型,p1x4這種類型為指向含4個int元素的1維數組的指針
typedef int (*p3x4)[3][4];//定義數據類型,p3x4這種類型為指向含3x4個int元素的2維數組的指針
下面從一維數組說起:(定義:int a[4])
(1)一維數組名a是個地址,地址類型為:int *
(2)一維數組名取地址&a是個地址,地址類型同:int (*p)[4], 也即&a指向含4個int元素的一維數組
再看二維數組b[3][4],這個二維數組也可以可以看成一個含3個成員的一維數組,每一個成員含有4個int元素,依次,仿照一維數組的結論,有:
(1)b[0]是個一維數組名,也是個地址,地址類型為:int *
(2)&b[0]是個地址,地址類型同:int (*p)[4], 也即&b[0]指向含4個int元素的一維數組
更進一步:
(3)b是個地址,地址類型同:int (*p)[4],也即b指向含4個int元素的一維數組
(4)&b是個地址,地址類型同:int (*p)[3][4],也即&b指向含3x4個int元素的2維數組
注意:尤其注意上面的(3),這條結論指出了:二維數組名實際上是一維數組的地址!
總結:
① 數組名,是指向它的第一個一級成員的指針
② 數組名取地址,是指向整個數組的指針
PS:所謂一級成員,舉個例子,int a[5],那么數組a的一級成員就是int型變量;int b[10][5],數組b的一級成員是int [5]的一維數組
---------------------
作者:qq_610642
來源:CSDN
原文:https://blog.csdn.net/qq_31073871/article/details/80800858
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!