#include <stdio.h> int main() { int a[5]={1,2,3,4,5}; int *ptr1=(int*)(&a+1); int *ptr2=(int*)((int

#include<stdio.h>intmain(){inta[5]={1,2,3,4,5};int*ptr1=(int*)(&a+1);int*ptr2=(int*)(... #include <stdio.h>
int main()
{
int a[5]={1,2,3,4,5};
int *ptr1=(int*)(&a+1);
int *ptr2=(int*)((int)a+1);
printf("%d,%d",ptr1[-1],*ptr2);
return 0;
}
这个ptr1[-1],*ptr2具体解释下。
展开
 我来答
C_大白痴
2010-11-08 · TA获得超过261个赞
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:269万
展开全部
地址 0-3 4-7 8-11 12-15 16-19 20-23
数值 1 2 3 4 5
&a+1 就是地址为20的地方
*ptr1[-1]就是20-4=16这个地方 一个Int 占用4个地址
(int)a+1 跟a+1不一样 前者地址为1 后者为4
所以*ptr2表示的是指向地址为1的指针地址
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式