下面这段程序输出?
main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
main()
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf("%d,%d",*(a+1),*(ptr-1));
}
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
不会吧。。我的第一反应是不会~~~
2,5
能否解释一下,谢谢!{:3_182:}{:3_182:}
*(a + 1) == a[1]
ptr == &a + 1 == a + sizeof(a)/sizeof(a[0]) == a + 5
*(ptr - 1) == *(a + 5 - 1) == *(a + 4) == a[4]
楼主对于数组和指针的关系看来还是理解不到位,建议去网上仔细搜索看看。否则,即使你这道面试题看懂了,遇到一个变形的题目,还是一下子就懵了的。
建议从最基本的看起,闻道有先后,不必害羞认为自己这么简单的知识点还要仔细认真的看。
我就纳闷了,a是一个地址,是一个常量,是1的地址;那&a表示对这个地址再取地址,这是什么意思???????
数组名绝非一个地址常量那么简单。
可以看看下面的文档
http://ishare.iask.sina.com.cn/f/7859661.html
关注!~
2,5