将数组中的每个变量初始化为' 0'与将所有这些初始化为null相同?

时间:2017-10-15 21:58:03

标签: c++ arrays null initialization zero

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

例如:

char setOfCharacters [15] = {'\0'};

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

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

1 个答案:

答案 0 :(得分:1)

实际上是这个初始化

char setOfCharacters [15] = {0};

相当于

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

将0设置为char类型的对象也可以使用字符文字'\0'编写。

两次初始化的结果

char setOfCharacters [15] = {'\0'};

char setOfCharacters [15] = {0};

是未显式初始化的数组的所有其他元素将被初始化为零。

考虑到比较

'\0' == 0

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