是将数组初始化为全0的形式吗
char myarray[ARRAY_SIZE] = {0}
所有编译器都支持吗?,
如果是这样,是否有与其他类型相似的语法?例如
bool myBoolArray[ARRAY_SIZE] = {false}
是将数组初始化为全0的形式吗
char myarray[ARRAY_SIZE] = {0}
所有编译器都支持吗?,
如果是这样,是否有与其他类型相似的语法?例如
bool myBoolArray[ARRAY_SIZE] = {false}
int a[10] = { 1, 2, 3 };
将设置a[3]..a[9]
为0
,(“与具有静态存储持续时间的对象隐式初始化相同”)。这对于C ++是否成立?
false
与并不相同0
,但是在{0}
0中转换为false
,在(对于C ++)中,{}
您甚至不必关心转换:它被初始化为false
or0
或null指针或任何其他类型敏感的默认值。
Answers:
是的,所有C ++编译器都支持这种形式的初始化。它是C ++语言的一部分。实际上,这是来自C语言的C ++语言。用C语言= { 0 }
编写的是惯用的通用零初始化程序。这也是几乎在C ++中的情况。
由于此初始化器是通用的,因此对于bool
数组,您实际上不需要其他的“语法”。0
也可用作bool
类型的初始化程序,因此
bool myBoolArray[ARRAY_SIZE] = { 0 };
确保使用初始化整个数组false
。以及
char* myPtrArray[ARRAY_SIZE] = { 0 };
in保证使用类型为null的空指针初始化整个数组char *
。
如果您认为它可以提高可读性,则可以使用
bool myBoolArray[ARRAY_SIZE] = { false };
char* myPtrArray[ARRAY_SIZE] = { nullptr };
但关键是= { 0 }
变体为您提供了完全相同的结果。
但是,在C ++中= { 0 }
可能无法对所有类型都起作用,例如枚举类型,例如,不能使用integer初始化的类型0
。但是C ++支持较短的形式
T myArray[ARRAY_SIZE] = {};
即只是一对空的{}
。这将默认初始化任何类型的数组(假设元素允许默认初始化),这意味着对于基本(标量)类型,整个数组将被正确地初始化为零。
bool myBoolArray[ARRAY_SIZE] = { false };
的数组都初始化为false,但是如果我bool myBoolArray[ARRAY_SIZE] = { true };
只写第一个元素则设置为true,而其他所有元素均为false。有什么解释吗?
bool
数组,那么其余的将为您零初始化。就是那样子。
bool myBoolArray[ARRAY_SIZE];
,则该数组正确地包含随机值,因此,我不会期望初始化会返回其中包含不同值的数组。就这样。
您可以通过这些方式在C ++中声明数组。如果知道数组大小,则应声明以下数组:整数:int myArray[array_size];
双double myArray[array_size];
精度:Char和string:char myStringArray[array_size];
char和string之间的区别如下
char myCharArray[6]={'a','b','c','d','e','f'};
char myStringArray[6]="abcdef";
如果您不知道数组的大小,则应将数组留空,如下所示。
整数: int myArray[array_size];
双: double myArray[array_size];
false
与0
(否则if(false)
不会计算为假)相同,因此您所拥有的将可能对99%的编译器起作用。除非我们引用标准,否则无法确定其他1%。