二維陣列名的型別

2021-09-01 02:59:07 字數 901 閱讀 3857

在討論二維陣列名之前我們先看一下一維陣列名表示的是什麼?

int b[3] = ;

cout << b << endl;

cout << *b << endl;

執行結果

說明一維陣列名其實是乙個指向陣列第乙個元素的位址。陣列名b的型別就是int*型的(其實b的型別和int型的指標不是完全等價的)。那二維陣列是不是也是這樣呢?

先看一段**

int a[3][3] = ,, };

cout << a << endl;

for (int i = 0; i < 3; i++)

cout << "*(a+" << i << "):" << *(a + i) << endl;

for (int i = 0; i < 3; i++)

cout << "a[" << i << "]:" << a[i] << endl;

for (int i = 0; i < 3; i++)

cout << "**(a+" << i << "):" << **(a + i) << endl;

執行結果

由程式執行結果可知,陣列名a和*a表示的都是位址,且都是陣列中第乙個元素的位址,那a的型別就不可能是int*了。而**a的值是1,說明二維陣列名a其實是乙個二級指標。而這個二級指標指向的是乙個指標陣列,指標陣列裡面存的是二維陣列中每一行第乙個元素的位址,所以說a的型別應該是int(*)[3]。

二維陣列和二維陣列名

對於一位陣列我們認識到其資料元素在記憶體中是按線性順序依次排列的,且一維陣列名的值是乙個指標常量。那麼二維陣列在記憶體中又是怎麼儲存的,其陣列名又有什麼含義呢?定義乙個二維陣列 int arr 3 4 我們可以將乙個二維陣列看做是乙個其中元素為陣列的乙個一位陣列,也就是說二維陣列第一維的元素實際上是...

二維陣列名的本質

本人是乙個c語言小白,二維陣列名到底是啥?一直困擾著我,不過現在我想通了。現在把我的心得分享給大家 定義乙個2行3列的二維陣列 int a 2 3 二維陣列名a不用說肯定是乙個指標,我們知道一維陣列名是乙個指向首元素的指標,我們是通過指標步長來判斷的 即 指標進行 1所跳過的位元組數 那麼二維陣列名...

二維陣列名 二維陣列名取位址 二級指標

先給出結論,便於以後查閱 首先給出幾個定義 typedef int p1x4 4 定義資料型別,p1x4這種型別為指向含4個int元素的1維陣列的指標 typedef int p3x4 3 4 定義資料型別,p3x4這種型別為指向含3x4個int元素的2維陣列的指標 下面從一維陣列說起 定義 int...