And*_*iga 4 c arrays initialization char
鉴于以下声明:
char inputBuffer[12];
数组中任何一个char的默认值是多少?我很想知道这一点,因为如果我想在数组中清除一个位置,我需要知道给它的价值.
数组元素具有不确定的值,除非数组在文件范围定义或具有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)
如果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如果未自动初始化具有自动存储期限的对象,则其值不确定。如果未静态初始化具有静态存储持续时间的对象,则:
-如果对象具有指针类型,则将其初始化为空指针;
—如果具有算术类型,则将其初始化为(正数或无符号)零;
—如果是集合,则根据这些规则(递归)初始化每个成员;
—如果它是一个联合,则根据这些规则(递归)初始化第一个命名成员。
| 归档时间: |
|
| 查看次数: |
5086 次 |
| 最近记录: |