void main(void) { int a[5]={1,2,3,4,5}; int *p=(int *)(&a+1); printf("%d\n",p[-1]);} 答案为啥是5?
运行之后答案确实是5.请问int*p=(int*)(&a+1);p[-1]这两个怎么理解呢?...
运行之后答案确实是5.
请问int *p=(int *)(&a+1);
p[-1]
这两个怎么理解呢? 展开
请问int *p=(int *)(&a+1);
p[-1]
这两个怎么理解呢? 展开
展开全部
&a 代表的是一维数组行地址 加1 即加1行 因此 &a+1 即为&a[5] 。
int *p=(int *)(&a+1) 即p保存了&a[5]的地址 p[-1] 即p - 1, 为a[4].
int *p=(int *)(&a+1) 即p保存了&a[5]的地址 p[-1] 即p - 1, 为a[4].
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
个人理解 int *p=(int *)(&a+1); 这里相当于把一维数组变成2维数组了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |