- 廣域變數 Global Variable
- 定義在所有函式的外面
- 區域變數 Local Variable
- 定義在某一函式裡面
其中,當遇到Local Variable和Global Variable同名時,會讀取到Local Variable的數值,直到Local
Variable的生命結束,才可用該名字讀Global Variable,而以下作法則是當兩者同名時,欲讀到Global Variable的作法:
Variable的生命結束,才可用該名字讀Global Variable,而以下作法則是當兩者同名時,欲讀到Global Variable的作法:
#include <iostream> using namespace std; int x = 1; int main(){ int x = 2; cout << x << endl; cout << ::x << endl; return 0; }
這程式會輸出"2 1"。
此外,Local Variable又有很多種Storage Classes,我會解釋為該資料型態的形容詞,這個形容詞敘述了它的生命期和作用範圍,以下列舉幾個介紹:
- register:生命期是所屬的函式。建議程式把這變數放到較快的記憶體裡面,因為該變數可能要反覆讀取
- auto:生命期是所屬的函式
- static:生命期為整份程式
- extern:生命期為整份程式
static會使得該變數在一份程式中只定義一次,之後就重複使用同一個變數。
#include <iostream> using namespace std; void print_num(int a){ int num = 0; num += a; cout << num << endl; } void print_num_static(int a){ static int num = 0; num += a; cout << num << endl; } int main(){ int a=1; print_num(a); print_num_static(a); cout << endl; print_num(a); print_num_static(a); return 0; }
output:
1
1
1
2
No comments:
Post a Comment