c语言函数的疑问

来源:百度知道 编辑:UC知道 时间:2024/07/05 08:40:12
书上有题目,若有数组char str1[10]="12345",str2[10]="dfaj",s[10];则交换str1和str2中的字符串可用下面的三条语句______;______;_____;
填strcpy(s,str1);strcpy(str1,str2);strcpy(str2,s);
为什么不能写s[10]=str1[10];str1[10]=str2[10];str[10]=s[10];
还有个题目:
main()
{char a[80];int i,j,c;
gets(a);
for(i=0,j=20;i<j;i++,j--)
{c=a[i];
a[i]=b[j];
a[j]=c;}
puts(a);}
为什么它可以写c=a[i];
a[i]=b[j];
a[j]=c;
而第一个不可以?为什么

c=a[i]; 像这样的赋值是单个的进行赋值的,而你上面的是整个数组的赋值,是想把str1数组赋给s数组,这是不行的,除了在初始时可以这样干,其他情况下操作都是错误

a[i]是存在的,s[10]是不存在的,明白不?s[10]是s[0]~s[9]不能用=的方式让数组全体赋值

数组只有在初始化的时候才能使用等号赋值。其他任何情况都不能通过等号赋值,只能对数组内的单个元素赋值。