char a[3],b[ ]=”china”;a=b;printf(“%s”,a);

char a[3],b[ ]=”china”;
a=b;
printf(“%s”,a); 则( )
A.运行后将输出China
B.运行后将输出Ch
C.运行后将输出Chi
D.编译出错
请详细讲解一下为什么,谢谢~

选D
cannot convert from 'char [6]' to 'char [3]'
“china”是一个以‘\0’结束的char[6]
不能直接赋值给char[3]
如果想赋值
可以
for(int i=0;i<3;i++)
{
a[i]=b[i];
}
这样结果是C
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-06-26
a=b;
此处编译器提示a=b;这句中必须是一个可更改的左值。而数组名相当于一个指针常量,不等同于指针
将char a[3]改成char *a
char *a,b[]="china";
a=b;
for(i=0;i<3;i++)
printf("%c",*(a+i));
第2个回答  2010-05-06
D.编译出错

原因是空间不够

数组a中的空间只有3

b中放到a中溢出本回答被提问者采纳
第3个回答  2010-05-06
D.编译出错
相似回答