读取没有功能的字符串

时间:2018-09-26 02:11:59

标签: c string

>char str[20]="HELLO"; 

是正确的,而

>char str[20];
>
str="HELLO"; 

不是。为什么?

1 个答案:

答案 0 :(得分:2)

char str[20]="HELLO";

上面是标识符str声明定义,并且具有 initializer {{1 }}。 C标准说明了此初始化

  

初始化程序指定存储在对象中的初始值。

     

字符类型的数组可以由字符串文字或UTF-8字符串初始化   文字,可以选择用大括号括起来。字符串文字的连续字节(包括   如果有空间或数组大小未知,则终止为空字符),初始化   数组的元素。

"HELLO"

这里的第一行还是标识符char str[20]; str="HELLO"; 声明定义,但没有初始化器。第二行是带有 assignment 表达式的语句。 分配约束为:

  

赋值运算符的左值应为可修改的左值。

关于左值,数组……:

  

可修改的左值是一个   没有数组类型,...

因此,尝试分配给数组是违反约束的。