作者mistel (Mistel)
看板C_and_CPP
标题[问题] C的指标和阵列
时间Tue Mar 3 16:27:46 2020
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]是存的东西为什麽不是阵列的起始地址?
以上两个感觉有点初阶的东西,但小弟一直想不透,恳请板友指点,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.136.50.38 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1583224068.A.FC6.html
1F:推 ddavid: 你可以参阅stackoverflow上的这一则:03/03 16:44
感谢你!
3F:推 plsmaop: 请参考 jserv 指标篇03/03 17:26
好的,小弟会去参考
没想到在这边也能看到p大!
※ 编辑: mistel (114.136.50.38 台湾), 03/03/2020 18:33:48
4F:→ gama79530: 你可以把阵列(例如int a[10]的a)当成指标"常数" 03/04 01:59
5F:→ gama79530: 意思就是他是一个指标,但是你不能去改他的位址 03/04 02:00
6F:→ gama79530: 然後他的值是compiler会自动给值,不用像一般指标变数 03/04 02:00
7F:→ gama79530: 要用malloc这类指令去取得位址 03/04 02:01
8F:推 yoche2000: 推jserv大神 03/06 02:14