
main()
{
int a[]={1,2,3,4,5,6,7,8,9,10},
*P=a
printf("%d\n",*(p+2));
}
程序有点问题,差个分号
int* p=a;
p先指向羡皮数组第1个空搭樱间
p+2后指向第兄枝差3个空间
*(p+2)就是去第3个空间的值,结果为3
你说的不是很清楚,不过我猜你大概就是想知道输出结果是什么吧,还有为什么?
首先你的程序有一定错误,第二行应该为int *p=&a;定义个int指针指向a。数组名也就是个地址,所以p也指向了这个地址,并且数组第一个元素的地仔缺拆址就是数念枣组名地址,后面的元素地扮橡址依次比前一个大1,所以p指向了第一个元素1,指针加法运算就是指针地址顺序移动n个地址,这里int类型平指针加2,就是p向后移动2个地址单元,就到指向了3.所以输出应该是3.
p指向a[0]
p+2 指向a[2]
加*是取a[2]里面的值
输出3