c语言新手问题 数组问题

以下程序的输出结果是
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
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-23
你说的不是很清楚,不过我猜你大概就是想知道输出结果是什么吧,还有为什么?
首先你的程序有一定错误,第二行应该为int *p=&a;定义个int指针指向a。数组名也就是个地址,所以p也指向了这个地址,并且数组第一个元素的地址就是数组名地址,后面的元素地址依次比前一个大1,所以p指向了第一个元素1,指针加法运算就是指针地址顺序移动n个地址,这里int类型平指针加2,就是p向后移动2个地址单元,就到指向了3.所以输出应该是3.
第2个回答  2012-02-23
p指向a[0]
p+2 指向a[2]
加*是取a[2]里面的值
输出3
相似回答