多維陣列名的本質

2021-07-22 18:41:21 字數 1067 閱讀 7819

#define _crt_securre_no_warnings

#include#include#include //多維陣列列印函式

void printarr1(int a[3][5])

}}//多維陣列列印函式

void printarr2(int a[5])

}}//多維陣列列印函式

void printarr3(int (*a)[5])

}}void main()

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

}//多維陣列名 代表? 指向一維陣列的指標

//(a+i) 代表整個第i行的首位址

//*(a+i) 代表了第i行首元素的位址

//*(a+i)+j*****》&a[i][j] 代表了第i行第j列 元素的位址

//*(*(a+i)+j)*****》a[i][j] 代表了第i行第j列 的元素

//a[i]===>a[0+i]===>*(a+i)

//a[i][j]====>a[0+i][j]===>*(a+i)[j]===>*(a+i)[0+j]===>*(*(a+i)+j)

printf("a:%d,a+1:%d\n",a,a+1);//步長

printf("&a:%d,&a+1:%d\n",&a,&a+1);

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

printf("-----------\n");

//多維陣列列印函式

結論:a是乙個指向int  myarray[5]的陣列指標 a+1 向後跳5*4,跳一行。

二維陣列名的本質

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

陣列名和陣列名的取址

關於陣列名和指標的區別 推薦看這兩篇文章 示例 char a 3 輸出10進製位址 輸出 a 為 2686777 a 為 2686777 a是陣列名,編譯器處理時相當於陣列首元素的位址 a是乙個指向陣列的指標,值為陣列的位址,等於陣列首元素的位址 輸出 a 為 1 a 為 1 a 為 2686777...

sizeof 陣列名 及strlen(陣列名)

程式的輸出結果為 1 100 2 4 3 1 相當於a 100 這個數所佔的位元組大小,也就是乙個char位元組占得大小 當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標。不論陣列a的容量是多少,sizeof a 始終等於sizeof char func char p int main ...