陣列名a和 a的區別

2021-08-11 15:11:56 字數 875 閱讀 2029

1、a表示&a[0],也即對陣列首元素取位址,a+1表示首位址+sizeof(元素型別)。

2、&a雖然值為陣列首元素位址,但型別為:型別 (*)[陣列元素個數],所以&a+1大小為:首位址+sizeof(a)。

&a取得是整個陣列的位址!既陣列名取位址等價於對陣列取位址。

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

*作為陣列名代表整個陣列

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

當陣列名作為首元素的位址時:

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

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

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

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

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

陣列名和指標區別

前兩天同學問了我乙個問題 陣列名和指標有什麼區別,或者說這兩者有沒有區別?我回顧了下,大學課堂上老師講的,貌似記得老師說陣列名就相當於指標,比如 一維陣列就是一級指標 二維陣列是二級指標 之類的。結果同學告訴說原來我也是這麼理解的,其實 陣列名與指標有著本質的區別 然後給我推薦了一篇博文。我們經常見...

陣列名和指標的區別

魔幻陣列名 請看程式 本文程式在win32平台下編譯 1.include 2.int main int argc,char argv 3.size 3 1 陣列名不是指標 size 我們先來推翻 陣列名就是指標 的說法,用反證法。證明 陣列名不是指標 假設 陣列名是指標 則 pstr和str都是指標...

陣列名和指標的區別

引言 指標是c c 語言的特色,而陣列名與指標有太多的相似,甚至很多時候,陣列名可以作為指標使用。於是乎,很多程式設計者就被搞糊塗了。而許多的大 學老師,他們在c語言的教學過程中也錯誤得給學生講解 陣列名就是指標 很幸運,我的大學老師就是其中之一。時至今日,我日復一日地進行著c c 專案的開發,而身...