为什么在 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);
广告
数据结构
计算机网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP