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

时间:2011-01-04 13:41:24

标签: c

鉴于

char foo[1024] = "bar";

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

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

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:3)

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

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

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

相当于

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