main() {int a[5]={1,2,3,4,5}; int *ptr=(int*)(&a+1); printf("%d %d\n",*(a+1),*(ptr-1)); }是多少

 我来答
百度网友3aa30a4
2017-04-09 · 超过30用户采纳过TA的回答
知道答主
回答量:84
采纳率:27%
帮助的人:33.2万
展开全部

这哪儿的题目...花式玩呐

结果是2 5

追问
后面为什么是5?能分析一下吗?
追答

int a[5]={1,2,3,4,5}这是一维数组

&a是二维数组里面的结构已经类似于&a={(1,2,3,4,5)

(0,0,0,0,0)}

这样子

(int*)(&a+1)已经指向了第二行的第一个元素可以等同于a[1][0]

这时候输出应该是乱码,因为没有给其赋值

然后我们又知道二维数组其实是顺序摆放的,所以当ptr-1时相当于指向了a[0][4]

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式