读书人

对数组名取指针的难题解决办法

发布时间: 2012-04-05 12:42:40 作者: rapoo

对数组名取指针的难题
int main()
{ int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d\n",*(ptr-1));
}


请教为什么结果是5?!!!
反复测试显示都是数组的最后一个数

[解决办法]
你有什么疑问 结果就是5啊
[解决办法]
我一开始就强调了&a得类型了。
[解决办法]
上面第一句说错了,指针有固定长度, 指针+1 ,的1 长度不固定。。。
[解决办法]

探讨
&a就是整个数组的地址,&a+1就是整个数组后面的那个地址,所以最后结果是5

读书人网 >C语言

热点推荐