為什麼在 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