【发布时间】:2016-01-25 19:03:44
【问题描述】:
在我们的代码库中,我发现了类似于
static char foo[4] = "0";
既然字符串比数组小,这还是定义好的吗?
假设,如果我有
static char bar[4] = "01234";
我假设数组将被初始化为“0123”。但这是由标准保证还是另一种可能的未定义行为情况?
【问题讨论】:
-
C 中没有部分初始化。当你用声明赋值时,整个对象被初始化(无论是数组还是结构)。您未指定值的任何元素都将使用 0(如果是数字)或 NULL(如果是指针)初始化。 char 是数字类型,因此其余元素将设置为 0(即 '\0' 字符)。
标签: c arrays string undefined-behavior