C語言補漏 指標和二維陣列

2021-09-05 12:30:57 字數 2324 閱讀 3840

二維陣列的其實就是在一維陣列上進行擴充套件的。

假設我們已經定義了乙個二維陣列array如下:

array是二維二維陣列的首位址。由於是二維陣列,也就是指向包含五個元素的陣列的指標。跨度是五個元素。

下面的例子:

#include int main()

} printf("size of int : %d\n", sizeof(int));

printf("array : %p\n", array);

printf("array+1 : %p\n", array+1);//array包含了五個元素的指標

}

執行結果:

size of int : 4

array : 000000efc48ff530

array+1 : 000000efc48ff544

請按任意鍵繼續. . .

array 與array +1的位址相差14 十進位製上也就是20,4×5 = 20,也就是說,兩者5個int型別的跨度。

所以,

#include int main()

} printf("*(array+1) : %d\n", *(array + 1));

printf("array[1][0] : %d\n", array[1][0]);

}

執行結果:

*(array+1) : -1225787644

array[1][0] : 5

請按任意鍵繼續. . .

o(∩_∩)o哈哈~,顯然不是!!!事實上是這樣的

*(array+1) ==array[1]
請看下面你的程式

#include int main()

} printf("array+1 : %p\n", array + 1);

printf("*(array+1) : %p\n", *(array + 1));

printf("array[1][0] : %d\n", array[1][0]);

printf("**(array+1) : %d\n", **(array + 1));

}

執行結果:

array+1  : 0000002c089ef644

*(array+1) : 0000002c089ef644

array[1][0] : 5

**(array+1) : 5

請按任意鍵繼續. . .

這樣就驗證了 *(array+1) ==array[1],就是指向第二行第乙個元素的位址。

**(array+1)  = array[1][0]

不難推斷,*(array+1)+3應該是指向第二行第三列元素的指標;*(*(array+1)+3)是第二行第三列的元素

看下面的**

#include int main()

} printf("&array[1][3] : %p\n", &array[1][3]);

printf("*(array+1)+3 : %p\n", *(array + 1) + 3);

printf("array[1][3] : %d\n", array[1][3]);

printf("*(*(array+1)+3) : %d\n", *(*(array + 1) + 3));

}

執行結果:

&array[1][3]  : 000000d35575f7f0

*(array+1)+3 : 000000d35575f7f0

array[1][3] : 8

*(*(array+1)+3) : 8

請按任意鍵繼續. . .

結果果然不出所料。

*(array+i) == array[i]

*(*(array+i)+j) == array[i][j]

*(*(*(array+i)+j)+k) == array[i][j][k]

★finished by songpl,2018.12.

二維陣列和指標 C語言

二維陣列和指標 1 二維陣列a由若干個一維陣列組成在c語言中定義的二維陣列實際上是乙個一維陣列,這個一維陣列的每乙個成員又是乙個一維陣列。如以上定義的a陣列,則可視a陣列由a 0 a 1 a 2 等三個元素組成,而a 0 a 1 a 2 等每個元素又分別是由4個整型元素組成的一維陣列。可用a 0 0...

二維陣列和指標 C語言)

二維陣列和指標 c語言 loveyou 二維陣列和指標 1 二維陣列a由若干個一維陣列組成在c語言中定義的二維陣列實際上是乙個一維陣列,這個一維陣列的每乙個成員又是乙個一維陣列。如以上定義的a陣列,則可視a陣列由a 0 a 1 a 2 等三個元素組成,而a 0 a 1 a 2 等每個元素又分別是由4...

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

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