为什么在 C/C++ 中,全局变量和静态变量初始化为其默认值?


全局变量和静态变量之所以要初始化为默认值,是因为这是 C 或 C++ 标准中的要求,同时还可以免费在编译时分配一个 0 值。静态变量和全局变量对生成的对象代码的行为相同。这些变量在 .bss 文件中分配,并在加载时根据分配给变量的常量,为其分配内存。

下面是一个全局变量和静态变量的示例。

示例

 在线演示

#include <stdio.h>
int a;
static int b;
int main() {
   int x;
   static int y;
   int z = 28;
   printf("The default value of global variable a : %d", a);
   printf("\nThe default value of global static variable b : %d", b);
   printf("\nThe default value of local variable x : %d", x);
   printf("\nThe default value of local static variable y : %d", y);
   printf("\nThe value of local variable z : %d", z);
   return 0;
}

输出

The default value of global variable a : 0
The default value of global static variable b : 0
The default value of local variable x : 0
The default value of local static variable y : 0
The value of local variable z : 28

在上面的程序中,全局变量在 main() 函数外部声明,其中一个为静态变量。声明了三个局部变量,并初始化了变量 z。

int a;
static int b;
….
int x;
static int y;
int z = 28;

打印了它们的默认值。

printf("The default value of global variable a : %d", a);
printf("\nThe default value of global static variable b : %d", b);
printf("\nThe default value of local variable x : %d", x);
printf("\nThe default value of local static variable y : %d", y);
printf("\nThe value of local variable z : %d", z);

更新于: 2020 年 6 月 26 日

3K+ 浏览

开启你的 职业生涯

完成课程获得认证

开始吧
广告