- 廣域變數 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