默认情况下是否初始化结构变量?

时间:2020-04-18 06:29:12

标签: c struct

关于在C语言中创建对象时会发生什么,我没有在线发现:像初始化对象的值或获取垃圾值一样。

#include <stdio.h> 
struct temp 
{ 
    int a; 
} s;

int main() 
{ 
    printf("%d", s.a); 
}

输出是:0

0是垃圾值吗?还是未定义的行为?

2 个答案:

答案 0 :(得分:5)

由于全局和静态结构具有静态存储持续时间,因此答案是肯定的-它们被初始化为零(结构中的指针将设置为NULL指针值,该值通常为零位,但严格来说不需要是)。

您使用了全局结构变量。因此初始化为默认值0。

答案 1 :(得分:1)

这取决于声明变量的位置。结构变量var user = [ //marks the start of the array { //marks the start of the object username: username //property:value pair }, ... ]//marks the end of the array 被声明为全局变量。因此,默认情况下它初始化为零。

link

中的更多内容
相关问题