以下不能正确进行字符串赋初值的语句是

以下不能正确进行字符串赋初值的语句是
A) char str[5]="good!";
B) char str[]="good!";
C) char *str="good!";
D) char str[5]={‘g',‘o',‘o',‘d'};

请给出解释 A是错的那么怎样使其正确
为什么B对啊

"good!"
这个字符串含有6个字符,
'g','o','o','d','!','\0'(这个默认的串尾符别忘了)

所以用 str[5]来存储就越界了

这么改:
char str[6]="good!";
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-01-02
1
A.char
str[5]={"good!"};//这个不符合C语言的
语法
规定,
字符串
初始化
是这样写的:
char
str[6]="good!";
//因最后还有一个结束符,因此
数组元素
应该是6个。
2
题目表述有些不准确,A,B,D叫初始化,C叫赋值。
3
题目中的单双引号全部是
中文
的,这也不符合C语言语法。应该改为
英文
的。
第2个回答  2009-09-13
char str[5]="good!";
改为char str[5]={"good!"};