将字符数组初始化为字符串值,未初始化的索引是否设置为空?

问题描述 投票:0回答:1

如果我有以下情况:

char test[10] = "#";

test[1]
test[9]
一定是
\0
吗?或者只是
test[1]
保证是
\0

c++ arrays initialization declaration string-literals
1个回答
37
投票

这个定义

char test[10] = "#";

相当于

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

即数组的两个元素由初始化器显式初始化。数组的所有其他元素都将被初始化为零,即隐式地将它们设置为“”

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

3 如果初始化器的数量少于数组元素的数量,则每个 未显式初始化的元素应为零初始化(8.5)。

© www.soinside.com 2019 - 2024. All rights reserved.