C语言刚入门,答案是B,不懂怎么得来的,求详细过程,有图?

17.不能把字符串"bye! "赋给字符数组b的语句是( )。

А. char b[10]={'b','y','e','!'};

B. char b[10];b= "bye!";

с. char b[10];strcpy(b,"bye!");

D. char b[10]= "bye!";

b 错误。
char b[10];定义一个10个字节的字符数组,数据存储在动态内存区
"bye!"字符串常量,存储在常量区
b数组不能在定义后通过直接赋值将"bye!"字符串常量赋值。
可以在定义的时候初始化赋值
char b[]="bye!";
系统会自动完成"bye!"的每一个字符的赋值到对应的位置
如:
b[0]='b' b[1]='y' b[2]='e' b[3]='1' b[4]='\0' 字符串结束符号
b="bye!"就不能赋值
因为"bye!"是一个字符串常量不是数组的地址。
你明白了吗?追问

太谢谢了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-10-23
答案必是一个错误的答案。因为数组名是一个指针常量,它的值是系统在编译时确定的,不能够被赋值的。
而其余三个答案都能够正确的实现,给字符串数组赋一个字符串的值。追答

答案必是一个错误的答案。因为数组名是一个指针常量,它的值是系统在编译时确定的,不能够被赋值的。
而其余三个答案都能够正确的实现,给字符串数组赋一个字符串的值。

本回答被网友采纳
第2个回答  2020-10-23
B中:一个是数组一个是指针,虽然两者用法一样毕竟还是两回事。相当于把指针地址写到数组地址(数组地址是常量,但反过来可以),所以必须用C的方法来赋值。
相似回答