c++ - 将char数组初始化为字符串值,未初始化的索引是否设置为null?

标签 c++ initialization declaration

如果我有以下情况:

char test[10] = "#";

test[1]test[9] 是否保证为 \0?还是只有 test[1] 保证为 \0

最佳答案

这个定义

char test[10] = "#";

等价于

char test[10] = { '#', '\0' };

即数组的两个元素由初始化器显式初始化。数组的所有其他元素将被初始化为零,这意味着它们将被隐式设置为 '\0'

根据 C++ 标准(第 8.5.2 节字符数组)

3 If there are fewer initializers than there are array elements, each element not explicitly initialized shall be zero-initialized (8.5).

关于c++ - 将char数组初始化为字符串值,未初始化的索引是否设置为null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25362074/

相关文章:

c++ - 来自 glxinfo 的 opengl 版本

c++ - rdbuf()->str() 在哪里?

c++ - 如何检查两个数组是否相同或不同

c++ - 当我将 int 数据成员的初始化值更改为 1 以外的任何值时程序崩溃

c++ - 仅存在声明时不包含类头

c++ - 使用 C++03 模拟 Variadic 模板时,我们可以在类中使用不同的代码吗?

PHP 通知 : Uninitialized string offset: 0

java - 了解局部变量初始化

c - 如果函数写在主函数之上,则不需要函数声明。为什么?

c - 为什么编译器说变量 "z"被重新声明为不同的变量类型?