我一直在学习在C ++数组中使用null-terminators,我一直想知道将数组初始化为0
是否与将其初始化为null相同。
例如:
char setOfCharacters [15] = {'\0'};
与
相比char setOfCharacters [15] = {0};
我知道将setOfCharacters初始化为0意味着数组中的每个内存位置都保持0开始。将它初始化为null可以完成同样的事情吗?
答案 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%等效。