来大神!!C语言中为什么a[i] =b[i]和i[a] = i[b]的结果一样
4个回答
展开全部
不知道你学过指针没.如果学过,一个表达式你就懂了:
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;
}
展开全部
(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
同样(i[a] = i[b])整个结果的值为左边的值i[a]。 是由i[b]赋值的。
说这两个结果相等,就是说b[i] 和i[b]相等。
你这段话哪来的,若有代码可以全发出来。
若是a[i]==b[i] 其整个结果是1.同样i[a] = i[b]整个结果也是1.
这是判断语句,结果只能是0或者非0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为你用的是赋值号 ”=“ 号
而不是用来判断是否相等的 “==” 号
所以,每次赋值只要没有越界或者类型等其他因素导致的错误,
你的每次赋值都将成功,所以返回永远为 true,所以 呵呵.... 每次都一样!!!
而不是用来判断是否相等的 “==” 号
所以,每次赋值只要没有越界或者类型等其他因素导致的错误,
你的每次赋值都将成功,所以返回永远为 true,所以 呵呵.... 每次都一样!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
什么意思,同段程序中这两句一样?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询