将数组中的每个变量初始化为“0”是否与将所有变量初始化为 null 相同?

Is initializing every variable in an array to '0' the same as initializing all of them to null?

我一直在学习如何在 C++ 数组中使用 null 终止符,我一直想知道将数组初始化为 0 是否与将其初始化为 null 相同。

例如:

char setOfCharacters [15] = {'[=10=]'};

相比
char setOfCharacters [15] = {0};

我知道将 setOfCharacters 初始化为 0 意味着数组中的每个内存位置都以 0 开头。将它初始化为 null 是否完成同样的事情?

其实这个初始化

char setOfCharacters [15] = {0};

等同于

char setOfCharacters [15] = { (char )0};

将 0 设置为 char 类型的对象也可以使用字符文字 '[=15=]'.

以及两次初始化的结果

char setOfCharacters [15] = {'[=12=]'};

char setOfCharacters [15] = {0};

数组中所有其他没有显式初始化的元素都将被零初始化。

考虑到比较

'[=14=]' == 0

总是产生 true。此比较中的字符文字被提升为 int 类型(在 C 中,字符常量甚至具有 int 类型,因此 '[=15=]' 100% 等同于 0