初始化char数组时,剩余空间是零填充还是未初始化?

特定

char foo[1024] = "bar"; 

这将初始化foo以包含’b’,’a’,’r’,0。 剩下的1020个字符是零初始化还是未初始化?

我认为上面的内容与`char foo [1024] = {‘b’,’a’,’r’,’\ 0’}相同; 和初始化聚合一样,未提及的任何成员都被初始化为零?

如果以某种方式初始化数组/聚合[编辑:通过使用静态初始化程序],则剩余的未指定条目被清零,是的。

是的,未初始化的数组元素将为零。 例:

如果初始化程序提供的元素太少,则假定其余数组元素为0:

 int v5[8] = { 1 , 2 , 3 , 4 }; 

相当于

 int v5[] = { 1 , 2 , 3 , 4 , 0 , 0 , 0 , 0 };