#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 ...