c - 读取没有功能的字符串
问题描述
>char str[20]="HELLO";
是正确的,而
>char str[20];
>
str="HELLO";
不是。为什么?
解决方案
char str[20]="HELLO";
上面是一个声明,也是一个标识符的定义str
,并且有一个初始化器,"HELLO"
。C标准说明了这个初始化:
初始化器指定存储在对象中的初始值。
字符类型的数组可以由字符串文字或 UTF-8 字符串文字初始化,可选地用大括号括起来。字符串文字的连续字节(如果有空间或数组大小未知,则包括终止的空字符)初始化数组的元素。
char str[20];
str="HELLO";
这里的第一行还是一个声明,也是标识符的定义str
,但没有初始化器。第二行是带有赋值表达式的语句。分配的约束是:
赋值运算符应具有可修改的左值作为其左操作数。
关于左值,数组,...:
可修改的左值是没有数组类型的左值,……</p>
因此,尝试分配给数组是违反约束的。
推荐阅读
- html - 每当(特定)html属性发生变化时,角度调用函数?
- spring-boot - 使用 @RestClientTest 排除 @SpringBootApplication 类进行单元测试
- javascript - 如何将此子组件的状态传递给父组件?
- python - 验证进入 python 烧瓶应用程序的 JSON 发布请求
- python - 特定半径内的兴趣点
- django - 如何删除或忽略 serializer.py 中的 serializer.data 对象?
- javascript - 从控制器模型重定向 ajax 请求
- c++ - 如何初始化这个结构?
- ubuntu - 无法在浏览器中访问 minikube 服务,但 curl 工作正常
- reactjs - React 不呈现最新状态