鉴于
char foo[1024] = "bar";
这将初始化foo以包含'b','a','r',0。剩下的1020个字符是零初始化还是未初始化?
我认为上面的内容与`char foo [1024] = {'b','a','r','\ 0'}相同;和初始化聚合一样,未提及的任何成员都被初始化为零?
答案 0 :(得分:9)
如果以某种方式初始化数组/聚合[编辑:使用静态初始值设定项],则剩余的未指定条目将被清零,是的。
答案 1 :(得分:3)
是的,未初始化的数组元素将为零。例如:
如果初始化程序提供的元素太少,则假定其余数组元素为0:
int v5[8] = { 1 , 2 , 3 , 4 };
相当于
int v5[] = { 1 , 2 , 3 , 4 , 0 , 0 , 0 , 0 };