y+=*(p+x)是怎么解释?(一个初学C学生的困惑)
include
main()
{
int a[]={2,4,5,7,11,12},x,y=0,*p;
p=&a[1];
for(x=0;x<=3;x++) y+=*(p+x);
printf("%d",y);
getch();
}
搜索更多相关的解决方案:
困惑 学生 初学 解释
----------------解决方案--------------------------------------------------------
我试了一下结果是27,可是怎么来的呀.有点乱啦?
----------------解决方案--------------------------------------------------------
main()
{
int a[]={2,4,5,7,11,12},x,y=0,*p;
p=&a[1]; // *p == 4; for(x=0;x<=3;x++) y+=*(p+x);
// x == 0 --> *(p + x) == 4 --> y == 4;
// x == 1 --> *(p + x) == 5 --> y == 9;
// x == 2 --> *(p + x) == 7 --> y == 16;
// x == 3 --> *(p + x) == 11--> y == 27; printf("%d",y);
getch();
}
----------------解决方案--------------------------------------------------------
谢谢你herbert_1987. 不.应该称你老师啦!
你真不简单.
懂啦
----------------解决方案--------------------------------------------------------
a[n] 和 *(a+n)是完全相等的。
同样,*(p+x) 和 p[x]是完全相等的。
而 p=&a[1],换种表示方法就是 p=&*(a+1)=a+1。
所以 *(p+x) 也就是 *(a+1+x) 也就是 a[1+x]。
还有看不懂的就去问 herbert_1987。
----------------解决方案--------------------------------------------------------
个个都是哪么让我钦佩!
[此贴子已经被作者于2007-6-26 15:16:35编辑过]
----------------解决方案--------------------------------------------------------
其实这题目,自己去根据答案推敲下也就知道了,这是指针数组最基本的概念吧。
----------------解决方案--------------------------------------------------------
谢谢huangfengchu. 很有道理.
----------------解决方案--------------------------------------------------------
ai
----------------解决方案--------------------------------------------------------
以下是引用海的女儿在2007-6-26 14:59:34的发言:
谢谢你herbert_1987. 不.应该称你老师啦!
你真不简单.
懂啦
羡慕
----------------解决方案--------------------------------------------------------