来大神!!C语言中为什么a[i] =b[i]和i[a] = i[b]的结果一样

 我来答
文正153
推荐于2017-11-26 · TA获得超过2.1万个赞
知道大有可为答主
回答量:2221
采纳率:63%
帮助的人:639万
展开全部

不知道你学过指针没.如果学过,一个表达式你就懂了:

a[i] == *(a+i);

b[i] == *(b+i);

如果没学过指针,我给你简单解释几句:数组名是数组第一个元素的地址.再加i,就是加

sizeof(类型)*i.  而星号(*)是指:它后面的指针变量指向的变量.如果p指向i,*p == i.如果*p = 1,i就是1.


同理

i[a] == *(i+a);

i[b] == *(i+b);

//程序演示:
# include <stdio.h>

int main(viod)
{
    int i, a[10], b[10];
    int *p = &i;//p是int*类型,不能把一个int类型赋给一个int*.而&i就是i的地址(int*)
    
    *p = 5;
    *(i+a) = 10;//a是const int*类型.
    *(i+b) = 11;//b同上
    
    printf("%d\t%d\t%d\t%d\n", i, *p, a[i], i[b]);

    return 0;
}
clXP3843
2014-08-01
知道答主
回答量:32
采纳率:100%
帮助的人:16.8万
展开全部
(a[i]=b[i])整个结果的值为左边的值a[i]。 是由b[i]赋值的。
同样(i[a] = i[b])整个结果的值为左边的值i[a]。 是由i[b]赋值的。

说这两个结果相等,就是说b[i] 和i[b]相等。

你这段话哪来的,若有代码可以全发出来。
若是a[i]==b[i] 其整个结果是1.同样i[a] = i[b]整个结果也是1.
这是判断语句,结果只能是0或者非0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jimmycjxu
2014-08-01 · 超过10用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:14.1万
展开全部
因为你用的是赋值号 ”=“ 号

而不是用来判断是否相等的 “==” 号
所以,每次赋值只要没有越界或者类型等其他因素导致的错误,
你的每次赋值都将成功,所以返回永远为 true,所以 呵呵.... 每次都一样!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1b6dacb8a0
2014-08-01
知道答主
回答量:22
采纳率:0%
帮助的人:16.1万
展开全部
什么意思,同段程序中这两句一样?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式