c語言 陣列名和 陣列名的區別

2021-07-23 14:23:19 字數 669 閱讀 8248

在學習c語言的過程中我們可以發現乙個一維陣列的的陣列名往往具有兩層含義:

一. 作為陣列名代表整個陣列

二. 作為指標代表陣列的首元素位址(因此很容易把陣列和指標混為一談)。

我們可以發現陣列名等價於乙個指向陣列首位址的指標。

當陣列名代表整個陣列的時候是在以下兩種情況:1.在用sizeof關鍵字求陣列所佔的記憶體大小。2.對陣列名取位址時代表整個陣列的首位址。

由此可見:當用sizeof求陣列的記憶體長度時,陣列名所代表的是整個陣列,所以長度=5*4=20;

在用sizeof求&arr的記憶體長度時,他所求的空間長度是指向整個陣列的位址的占用空間長度;

當對陣列名取位址時&arr+1所佔的位址與&arr所佔的位址相差20;而arr+1所佔的位址與arr所佔的位址相差4;

具體原理及內容可參見陣列名與指標的關係或指標陣列與陣列指標。

陣列名和陣列名取位址的區別

以下 會列印出什麼樣的日誌呢?cpp view plain copy include int a 2 int main 本機 linux 結果輸出 a 0x804a014 a 0x804a014 a 1 0x804a018 a 1 0x804a01c 沒錯,上面i 和 ii列印出來的位址是一樣的,i...

陣列名和陣列名取位址的區別

include int main 執行效果 printf d n sizeof a 結果20,有點陶醉.a,既然是指向陣列結構的指標,不應該大小為20.其實,ps 如果是 int a 1,則結果是1245037 即1245036 1 揭密陣列名 陣列名的內涵在於其指代實體是一種資料結構,這種資料結構...

陣列名和陣列名取位址的區別

include int main 執行結果 編譯環境為vs2013 分析 由執行結果可知,陣列名a和 a得記憶體位址相同。我們由陣列和指標的關係知道,a代表這個數字,它相當於乙個指標,指向第乙個元素 a 0 即指向陣列的首位址。陣列中的其他元素可以通過a的位移得到,此時的高階是以陣列中單個的元素型別...