这是一道C语言考试题,希望能说出具体原因

有以下程序main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\",... 有以下程序
main()
{ int i,s=0,t[]={1,2,3,4,5,6,7,8,9};
for(i=0;i<9;i+=2) s+=*(t+i);
printf("%d\",s); }
这一题我还有点不明白的是s+=*(t+i)这一步是说s是一个指针还是具体就是一个数如果是指向的一个数的话好像指到最后会超出范围,式中的t是指数组中的第一个元素还是指什么?请一步一步地话化我看一下,谢谢
A 45
B 20
C 25
D 36
展开
 我来答
kevinzhuy
2010-02-04 · TA获得超过106个赞
知道答主
回答量:35
采纳率:0%
帮助的人:0
展开全部
在这里t是一个地址,是那个{1,2,3,4,5,6,7,8,9};数组的首地址,也就是说t自己指向1的那个位置

(t+i)则表示的是从t开始偏移i个数字的地址比如i是2,那么从数组中的第一个数字1开始偏移两个数字,因此(t+2)指向数字3

*(t+i)则是取(t+i)这个地址的值所以 *(t+2) 等于3

在for循环中i分别等于0 2 4 6 8,因此(t+i)分别指向1 3 5 7 9,不会超出范围

所以最后s等于1+3+5+7+9=25
zjjzha
2010-02-04 · TA获得超过103个赞
知道小有建树答主
回答量:169
采纳率:0%
帮助的人:171万
展开全部
选C
i=0 s=s+t[0] s=0+1=1
i=2 s=s+t[2] s=1+3=4
i=4 s=s+t[4] s=4+5=9
i=6 s=s+t[6] s=9+7=16
i=8 s=s+t[8] s=16+9=25
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
NKLoveRene
2010-02-04 · 超过23用户采纳过TA的回答
知道答主
回答量:120
采纳率:0%
帮助的人:64.8万
展开全部
25
i分别是0、2、4、6、8
对应的*(t+i)就是1+3+5+7+9 = 25
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式