C語言sizeof陣列名

2021-03-07 02:24:35 字數 537 閱讀 8285

1樓:我要

陣列名與指標有太多的相似,甚至很多時候,陣列名可以作為指標使用。於是乎,很多程式設計者就被搞糊塗了。而許多的大學老師,他們在c語言的教學過程中也錯誤得給學生講解:

"陣列名就是指標"。這種誤解的根源在於國內某著名的c程式設計教程(出版量最多的那本破書)。

陣列名的內涵在於其指代實體是一種資料結構,這種資料結構就是陣列;陣列名的外延在於其可以轉換為指向其指代實體的指標,而且是一個指標常量;指向陣列的指標則是另外一種變數型別,僅僅意味著陣列的存放地址!

sizeof(a)為什麼等於40呢,因為陣列這種結構儲存了陣列的大小,有的書說這個值儲存在陣列首地址前面的記憶體中(這一點,我沒驗證)。最簡單的方法你就記著,陣列名不是普通的指標。

2樓:gta小雞

前一個list+1說的是c語言中的指標加法,+1表示向後偏移一個單位,這個單位的長度等於指標所指資料型別的長度,即int型的長度;後一個list+sizeof(int)說的是實際偏移的位元組數,也就是1個單位等於1個int型所佔用的位元組數(通常是4個位元組)。

c語言中陣列名及陣列元素名有何區別

例如char a a是代表整個陣列,a 0 a 1 a 4 各自代表其中的一個數.嚴格來說,a是一支指向char的指標.a就是a 0 a 1 就是a 1 a 4 就是a 4 int array 3 上式中,array就是陣列名,你說的陣列元素名應該是array 0 或array 1 array 2 ...

c 陣列名和指標,C 的指標與陣列名有什麼區別?

1.str是陣列,str相當 copy於陣列首地址。bai2.mstr 指向 str,相當於du指向了陣列的第一個zhi地址,dao mstr 就輸出h。3.str只是相當於陣列首地址,但是對陣列名取地址,str 得到的是一個指向整個地址的指標,型別是char 12 所以第一行輸出hello wor...

c語言,型別說明符陣列名譚浩強書裡看到的,覺得有問題的請進

這很正常啊。那本書很早之前的了。這裡的常量表示式只是要說你必須指定陣列的版長度而已。這個長權度在編譯時必須是常量。現在的c99標準已經允許變長陣列的存在了,即長度不需要是常量。可以baidu一下變長陣列。或許是你誤bai解了這個句話,du很明顯 常量表示式 zhi的含義就是dao說固定的一 incl...