y-=10c语言怎么解释,y+=*(p+x)是怎么解释?(一个初学C学生的困惑)

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. 不.应该称你老师啦!

你真不简单.

懂啦

羡慕

----------------解决方案--------------------------------------------------------

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值