为什么在 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);
广告