c++ - C++ 中 char 数组的初始化是如何工作的?
问题描述
我对 C++ 很陌生,我看到了这种我以前从未学过的 char 数组的初始化方式。我想知道下面的代码与分配相比如何工作
char tmp[] = {'a','b','c',...};
const char charset[] =
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYS"
"0123456789";
解决方案
字符串文字存储在可执行文件中的某个位置,编译器知道它们的存储地址。通过将字符串文字分配给 char* 指针,将存储文字的内存位置的地址复制到变量中。另一方面,使用字符串字面量初始化数组会将字符串复制到数组中,同时将数组的剩余元素设置为零。
请注意,字符串文字会自动以尾随零字节存储。此方法与花括号初始化之间的唯一区别是编译器添加了尾随零。
推荐阅读
- c++ - 隐藏依赖项的继承属性?
- node.js - 如何限制猫鼬查找响应以显示 objectid
- amazon-web-services - AWS Step Functions:如何访问在 catch 块中生成异常的状态的输入?
- react-native - 没有开关盒的 React-redux 减速器
- php - 根据选择的支付网关和用户角色添加费用
- java - 将 OutputStream 转换为 PipedOutputstream
- c++ - 有没有更简单的方法从后面遍历向量?
- c# - 接口和重载
- c# - 如何在 C# 中对两个 JSON 数组进行排序和比较?
- node.js - 带有ipc的Windows上的节点child_process.spawn错误文件描述符