作者ac01965159 (leeleo)
看板C_and_CPP
标题[问题] 关於不同资料却得到相同地址的问题
时间Wed Sep 11 21:13:00 2019
最近在练习写程式的时候碰到一些问题,想来请教一下,以下是程式码:
https://pastebin.com/pzgHN0bt
执行结果:
https://i.imgur.com/9v2nirr.jpg
有两个问题:
1.我的想法是,a为一个储存a[0]的位置的指标,而a[0]又存放着指向a[0][0]资料的指
标,但是照理说,这两笔资料不是应该存在不同位置的吗?
2.那既然上面都已经输出了相同的地址,那我把一样的地址拿去取值,却得到不一样的
结果,不知道原因为何。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 124.9.129.71 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1568207583.A.F22.html
1F:→ EricTCartman: 你可以看二维阵列的实际记忆体内容怎麽配09/11 21:15
※ 编辑: ac01965159 (124.9.129.71 台湾), 09/11/2019 21:16:55
2F:→ EricTCartman: 你编辑这麽多次网址还是错的 = = 可以换行吗09/11 21:17
4F:→ ac01965159: om/pzgHN0bt09/11 21:19
5F:→ EricTCartman: 阵列 != 指标 最简单的例子 你去sizeof(a) 09/11 21:20
※ 编辑: ac01965159 (124.9.129.71 台湾), 09/11/2019 21:20:34
6F:→ ac01965159: 抱歉手机版不太熟悉,上面弄好了。 09/11 21:21
7F:→ EricTCartman: 建议搜寻 array vs pointer 多看几次就搞懂了 09/11 21:22
8F:→ ac01965159: 後来我有自己手动去用动态配置记忆体用出一个2维阵列 09/11 21:23
9F:→ ac01965159: 测试看看,可是结果跟输出a与a[0]的答案是不同的,但 09/11 21:23
10F:→ ac01965159: 是系统配的二维阵列却不一样,不太明白为什麽。 09/11 21:23
11F:→ EricTCartman: 动态配置记忆体你操作的对象是指标不是阵列 09/11 21:31
12F:→ EricTCartman: 你要弄懂的是指标跟阵列的操作区别 09/11 21:32
13F:→ nh60211as: *a不是int pointer吗? 09/11 21:33
14F:→ EricTCartman: 指标跟阵列的类别不同 只是你刚好可以用指标存取阵 09/11 21:33
15F:→ EricTCartman: 列 但指标阵列两者并不等价 09/11 21:33
16F:→ ac01965159: *a应该是pointer,只是不解为什麽a==*a 09/11 22:00
17F:→ ac01965159: 上网查过後,还是不清楚手动生成一个二维阵列,跟自 09/11 22:01
18F:→ ac01965159: 动生成的array为什麽会有这种差别 09/11 22:01
19F:→ ac01965159: 手动生成的2维阵列: 09/11 22:02
20F:→ ac01965159: paste in.com/TwsxYLeE 09/11 22:02
21F:→ loveme00835: 动态配置的那种不叫阵列 09/11 22:03
22F:→ ac01965159: 原来如此,那两笔不同资料,,得到相同的地址,该如 09/11 22:24
23F:→ ac01965159: 何解释才好呢,查过array跟pointer的关系後还是不知 09/11 22:24
24F:→ ac01965159: 道原因,是本身这麽做就没定义吗? 09/11 22:24
25F:→ EricTCartman: 指标可以对任何型别的资料进行存取 你甚至可以用其 09/11 22:28
26F:→ EricTCartman: 他型别来解释 09/11 22:29
27F:→ EricTCartman: 上面已经告诉你了 sizeof(array)跟sizeof(pointer) 09/11 22:30
28F:→ EricTCartman: 结果不同 阵列的大小是已经决定好的 09/11 22:30
29F:→ EricTCartman: 至於a、a[0]、a[0][0]、*a、*a[0]这是语法定义 09/11 22:31
30F:→ ac01965159: 好的,感谢。 09/11 22:37
31F:推 kaneson: 指标的[]只是语法糖, 运作方式跟阵列的[]不太相同,写法 09/12 18:50
32F:→ kaneson: 刚好一样而已 09/12 18:50