首页 > 解决方案 > 读取没有功能的字符串

问题描述

>char str[20]="HELLO"; 

是正确的,而

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

不是。为什么?

标签: cstring

解决方案


char str[20]="HELLO";

上面是一个声明,也是一个标识符的定义str,并且有一个初始化器"HELLO"。C标准说明了这个初始化

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

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

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

这里的第一行还是一个声明,也是标识符的定义str,但没有初始化器。第二行是带有赋值表达式的语句。分配约束是:

赋值运算符应具有可修改的左值作为其左操作数。

关于左值,数组,...:

可修改的左值是没有数组类型的左值,……</p>

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


推荐阅读