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

And*_*iga 4 c arrays initialization char

鉴于以下声明:

char inputBuffer[12];

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

oua*_*uah 7

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

 #include <stdio.h>

 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
 }
Run Code Online (Sandbox Code Playgroud)


Moh*_*ain 5

如果char inputBuffer[12];是全局或静态,则使用进行初始化\0

char inputBuffer1[12];  /* Zeroed */
static char inputBuffer1[12];  /* Zeroed */

int fn()
{
  static char inputBuffer3[12];  /* Zeroed */
}
Run Code Online (Sandbox Code Playgroud)

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

int fn2()
{
  char inputBuffer4[12];  /* inderminate value */
}
Run Code Online (Sandbox Code Playgroud)

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

6.7.8节的初始化(强调我的)

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