C/C++ 學習筆記:全局變量隨筆

全局變量的優缺點

1)      全局變量過多會佔用更多的內存(因爲其生命期長)

2)      提高了耦合性,牽一髮而動全身,時間久了,代碼長了,就不知道全局變量被哪些函數改過。

3)      提高了模塊間的耦合性,對後期維護、拓展和複用都帶來極大影響。

4)      使用全局變量程序運行時速度會更快一些(因爲內存不需要再分配)

5)      便於傳遞參數。


對於全局變量的初始化

全局變量在系統載入程序時就已經初始化爲指定值或者是默認值(一般是0一類的)

C 標準:全局變量(external variable)和靜態變量 (static variable)的顯示初始化式必須爲常量表達式

// test.c 關於 C 標準下情況
#include <stdlib.h>

int a = 10;// 正確
int b = a;// 這裏會編譯錯誤:error: initializer element is not constant 即:初始化式不是常量
int c = a + 10;// 這裏會編譯錯誤:error: initializer element is not constant 即:初始化式不是常量
char* pStr = (char*)malloc(10 * sizeof(char));// 這裏會編譯錯誤:error: initializer element is not constant 即:初始化式不是常量

int d;
d = 10;// 對於採用賦值方式情況:C 編譯器可能提示警告,有的 C 編譯器可能提示錯誤。

int main() {
    return 0;
}
// test.cpp 關於 C++ 標準下的情況
#include <cstdlib>

int a = 10;// 正確
int b = a;// 正確
int c = a + 10;// 正確
char* pStr = (char*)malloc(10 * sizeof(char));// 正確
char* pStr2 = new char[10];// 正確

int d;
d = 10;// 對於採用賦值方式情況:C++ 給出編譯錯誤:error: 'd' does not name a type

int main() {
    return 0;
}

總結

1. 對於 C 和 C++ 全局變量,只能對其採用初始化的方式,而不能採用賦值的方式

2. C 語言中全局變量和靜態變量的初始化必須是一個常量表達式,因此也不能動態分配;而在 C++ 中是可以的





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章