将数组中的每个变量初始化为“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
。
我一直在学习如何在 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
。