除了兩種特殊情況,二維陣列名都是指向二維陣列中的第乙個一維陣列的陣列指標。
特殊情況一:sizeof(陣列名) [統計陣列長度]
#include
// 二維陣列作為引數傳遞
//void printarr(int arr[3][3], int row, int col) // int arr[3][3] 等價於 int (*arr)[3] arr為指向二維陣列中的第乙個一維陣列的陣列指標
//void printarr(int (*arr)[3], int row, int col)
void
printarr
(int arr[
3],int row,
int col)
printf
("\n");
}}intmain()
,,};
/*
int arr[3] = ,,};
*/int(
*p)[3]
= arr;
// 二維陣列名代表指向二維陣列中的第乙個一維陣列的陣列指標
//列印出6
//printf("%d\n", arr[1][2]);
printf
("%d\n",*
(*(p+1)+
2));
// p+1 跳到第二個一維陣列,*(p+1)得到第二個一維陣列第乙個元素的位址,*(p+1)+2得到第二個一維陣列第三個元素的位址,最後解引用的到6
printarr
(arr,3,
3);return0;
}
一維陣列,二維陣列,三維陣列名的含義
1 一維陣列 int a 5 a是陣列的位址,故 a 1是加乙個陣列大小的長度。增加20個位元組。p2 a 由於p2是指向具有10個整型元素陣列的指標,所以p2 1所指向的下乙個元素,所以p2 1所指的下乙個元素,就是跳過這10個元素的下10個元素的位置,即是陣列a的最後乙個元素a 9 之後的下乙個...
二維陣列和二維陣列名
對於一位陣列我們認識到其資料元素在記憶體中是按線性順序依次排列的,且一維陣列名的值是乙個指標常量。那麼二維陣列在記憶體中又是怎麼儲存的,其陣列名又有什麼含義呢?定義乙個二維陣列 int arr 3 4 我們可以將乙個二維陣列看做是乙個其中元素為陣列的乙個一位陣列,也就是說二維陣列第一維的元素實際上是...
二維陣列名的本質
本人是乙個c語言小白,二維陣列名到底是啥?一直困擾著我,不過現在我想通了。現在把我的心得分享給大家 定義乙個2行3列的二維陣列 int a 2 3 二維陣列名a不用說肯定是乙個指標,我們知道一維陣列名是乙個指向首元素的指標,我們是通過指標步長來判斷的 即 指標進行 1所跳過的位元組數 那麼二維陣列名...