C 理解二維陣列的指標

2021-07-13 08:34:09 字數 725 閱讀 1151

用乙個main函式來描述這個問題吧

今天終於弄明白**p, (*p)[4], *p[4]的區別

int main();

//  理解二維陣列的指標 

//首先,二維陣列的名稱 arr 是乙個指標, 它相當於這樣的乙個指標:(*p)[4],它是乙個"指標的指標"

//從第一層面來講,它是乙個包含4個元素陣列的指標,

int (*p)[4] = arr;

//p等於這個陣列的首元素的位址

cout << arr << endl;

//*p為首元素的值(*p = p[0])

cout << *arr << endl;

//從第二層面來講,這個4元陣列的每個值都是乙個陣列的指標,指向陣列首元素,也就是每行的第乙個元素 

cout << **arr << endl;// 輸出1,即第,0行的第0個元素值

//接下來重點在這裡,這與 * 和 的優先順序有關係, 的優先順序大於 *, 

//所以arr[1]為第1行首元素的位址,*arr[1]為第一行首元素的值,即5 

cout << *arr[1] << endl; // 輸出5 

//*arr的值,根據上面解釋,為第0行的指標,

//所以(*arr)[1]表示第0行的第1個元素,即2 

cout << (*arr)[1] << endl;// 輸出2 

return 0;} 

多維陣列情況以此類推

C語言二維陣列指標(指向二維陣列的指標)

二維陣列的定義 int matrix 見圖的操作那篇文章裡面的定義 或者這篇文章提供了另外一種方法。二維陣列在概念上是二維的,有行和列,但在記憶體中所有的陣列元素都是連續排列的,它們之間沒有 縫隙 以下面的二維陣列 a 為例 int a 3 4 從概念上理解,a 的分布像乙個矩陣 0 1 2 3 4...

c 二維陣列指標

定義指標指向二維陣列 為了方便根據使用者輸入動態定義二維陣列的行和列,引入變數rowsnum 行 colsnum 列 以定義 行 列的二維陣列為例,int rowsnum 4 int colsnum 5 float a new float rowsnum for int i 0 i rowsnum ...

C 二維陣列指標

概括的說,指標其實就是可變陣列的首位址,說是可變陣列,是 指其包含內容的數量的可變的,並且是可動態申請和釋放的,從而充 分節約寶貴的記憶體資源。我一向喜歡一維陣列,除非萬不得已,我一 般是不用二維陣列的,多維的則更是很少涉足了。因為一維簡單,容 易理解,而用指標指向的多維陣列就具有相當的複雜性了,也...