C中未初始化数组中char的默认值是多少?

鉴于以下声明:

char inputBuffer[12];

数组中任何一个char的默认值是多少? 我很想知道这一点,因为如果我想在arrays中清除一个位置,我需要知道给它的价值。

数组元素具有不确定的值,除非它是在文件范围定义的数组或具有static存储类说明符,然后数组元素被初始化为0

  #include  char inputBuffer1[12]; // elements initialized to 0 static char inputBuffer2[12]; // elements initialized to 0 void foo(void) { char inputBuffer3[12]; // elements have indeterminate value! static char inputBuffer4[12]; // elements initialized to 0 } 

如果char inputBuffer[12]; 是全局的还是静态的,用\0初始化

 char inputBuffer1[12]; /* Zeroed */ static char inputBuffer1[12]; /* Zeroed */ int fn() { static char inputBuffer3[12]; /* Zeroed */ } 

如果它是函数本地的,它包含垃圾值。

 int fn2() { char inputBuffer4[12]; /* inderminate value */ } 

引自ISO / IEC 9899:TC2委员会草案 – 2005年5月6日WG14 / N1124

6.7.8初始化 (强调我的)

10如果未显式初始化具有自动存储持续时间的对象,则其值不确定。 如果未显式初始化具有静态存储持续时间的对象,则:
– 如果它有指针类型,则将其初始化为空指针;
– 如果它有算术类型,则初始化为(正或无符号)零;
– 如果是聚合 ,则根据这些规则初始化(递归)每个成员;
– 如果它是一个联合,则根据这些规则初始化(递归)第一个命名成员。