尝试访问 C 中未初始化的结构体字段是否被视为未定义行为?
struct s { int i; };
struct s a;
printf("%d", a.i);
最佳答案
取决于变量的存储持续时间:
struct
{
int a;
int b;
}c;
int main()
{
struct
{
int a;
int b;
}e;
static struct
{
int a;
int b;
}s;
printf("%d", c.a); // <- correct no UB
printf("%d", s.a); // <- correct no UB
printf("%d", e.a); // <- UB
}
结构c
和s
具有静态
存储持续时间,并且它们始终被初始化。如果程序员没有显式地初始化它们,它们将被归零。
结构e
具有自动存储期限,如果程序员未显式初始化,则不会归零
关于c - 未初始化的 C 结构字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56192942/