[问题] 阵列名称与指标

楼主: kumusou   2014-05-22 18:25:08
各位先进大家好:
int a[5] = {1,2,3,4,5};
int *ptr = (int *)(&a+1);
value of *ptr-1 = ??
这边我把它印出来发现是 32766
但是不太懂为什么
&a 跟 a 都是阵列的起始内存位置
所以我猜*ptr-1 会等于 2-1=1才对啊?!
有请高手分析
谢谢!
※ 编辑: kumusou (39.13.28.164), 05/22/2014 18:42:35
※ 编辑: kumusou (39.13.28.164), 05/22/2014 18:43:47
作者: bbuc (C&C++完美经典)   2014-05-22 18:51:00
*(ptr-1)?哦看错 还是要 ptr = &a+4?
楼主: kumusou   2014-05-22 18:55:00
我想问为啥印出来的执会是32766
作者: bbuc (C&C++完美经典)   2014-05-22 18:59:00
应该是因为a是一维指标 &a变成是二维指标了a+1会指到a[1]在一维指标上偏移 &a+1指的不知道是哪里
作者: remizu (remizu)   2014-05-22 19:07:00
&a的type是int[5] &a+1会加一个int[5]的size所以这里 ptr是指向a+5的那个位址更正一下 &a的type应该是int(*)[5]
作者: Cloud (抓不住...)   2014-05-22 19:30:00
不过这样求这值很奇怪,我猜应该是要求*(ptr-1)的值
作者: Feis (永远睡不着 @@)   2014-05-22 19:36:00
未定义行为
作者: prismwu   2014-05-22 21:50:00
出界啦 同样觉得想问的是*(ptr-1)
作者: johnpage (johnpage)   2014-05-23 08:16:00
出界+1
作者: Serge45 (QAQ)   2014-05-24 14:09:00
跟我去某家做 RF recorder 面试的题目一样...XD

Links booklink

Contact Us: admin [ a t ] ucptt.com