[問題] C的指標和陣列

作者: mistel (Mistel)   2020-03-03 16:27:46
hi,想問一點比較初階的東西,看看自己的理解對不對
問題描述:
https://i.imgur.com/bnSFVCv.jpg
如果我這樣宣告:
int a[10];
這時候單純看a這個變數其實就是一個指向叫做a的整數陣列指標,沒錯嗎?
我原本以為a會在記憶體上的其他位置,然後像指標一樣指向陣列的起始位址
像下圖這樣:
https://i.imgur.com/n7OTGZq.jpg
但實際測試過後才知道a這個指標就位在陣列的起始位址
那我的問題是:
1.a是一個指標嗎?不然為什麼compiler會警告我a是一個 int *的參數呢?
2.如果我做下列動作
print ("%x", a)
也確實print出陣列的起始位址了,那不是代表a的記憶體地址內的資料確實是陣列的起始位
址嗎?
那這樣a[0]是存的東西為什麼不是陣列的起始地址?
以上兩個感覺有點初階的東西,但小弟一直想不透,懇請板友指點,謝謝
作者: ddavid (謊言接線生)   2020-03-03 16:44:00
你可以參閱stackoverflow上的這一則:http://bit.ly/2PCjXO7
作者: plsmaop (plsmaop)   2020-03-03 17:26:00
請參考 jserv 指標篇
作者: gama79530 (Perfect Man)   2020-03-04 01:59:00
你可以把陣列(例如int a[10]的a)當成指標"常數"意思就是他是一個指標,但是你不能去改他的位址然後他的值是compiler會自動給值,不用像一般指標變數要用malloc這類指令去取得位址
作者: yoche2000 (Sushi Desu! 在下壽司)   2020-03-06 02:14:00
推jserv大神

Links booklink

Contact Us: admin [ a t ] ucptt.com