[问题] 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