这个声明在C ++中做了什么? C ++ 14
unsigned char Mem[0x1000] {0};
答案 0 :(得分:2)
unsigned char Mem[0x1000] {0};
它创建一个0x1000元素的数组,并使用初始化程序{0}
对其进行初始化。这会将第一个元素设置为0
,然后对其余元素进行值初始化,并将它们设置为0
。
即。它与此相同,只是对每个元素进行值初始化:
unsigned char Mem[0x1000] {};
这也与说= {}相同,除了在C ++ 11之前只能使用= {}表单,现在你也可以使用{}而不是=
对于这种情况:
unsigned char Mem[0x1000] {0x12, 0x00};
它将第一个元素设置为0x12
,然后将第二个元素设置为0x00
,然后将余数设置为0
。即它与:
unsigned char Mem[0x1000] {0x12};
如果每个元素都填充零,为什么这样做?
在C语言中,您无法使用空的初始值设定项,因此您无法说出{}
并且必须执行{0}
。这在C ++中并不正确,所以当他们做同样的事情时,没有理由更喜欢{0}
到{}
。
我需要"清洁"我声明的每个变量?
如果您不使用任何初始化程序,那么元素将是未初始化的,因此具有不确定的值,并且在您为其分配值之前读取元素将是未定义的行为。