在介紹完變數和資料型態之後,這邊先來介紹一下什麼是區域變數,什麼是全域變數。
我們知道變數就是一個具有名稱的資料,讓我們在撰寫程式碼時,可以輕鬆指定要對哪一個資料進行處理運算,那麼變數只要定義完之後,就可以隨處指定調用了嗎?
當然不是這樣的,每個變數都有其有效範圍,因此變數被分成兩種,一種是區域變數,另一種則是全域變數。
所謂的區域變數是指所有架構內宣告的變數,都叫做區域變數,它的有效範圍只限定在該架構內,在架構以外的地方都不能調用到該變數。
而架構指的是所有有用大括號來涵蓋範圍的,例如if - else if - else架構、swtich架構、迴圈架構、函式等等。
if (condition) {
int a; // 這裡的變數a即為區域變數
}
void main (int argc, char* argv[]) {
int a; // 這裡的變數a即為區域變數
}
全域變數是指不被任何架構涵蓋的變數,它的有效範圍是所有架構內都可以調用。
#include
int a = 0; // 這裡的變數a即為全域變數
void main (int argc, char* argv[]) {
// do something ...
}
你可能會有疑問,如果全域變數和區域變數的名稱是一樣的會如何呢?
答案是架構內調用的變數會變成是區域變數,而非全域變數,如下範例。
#include
int a = 0; // 這裡的變數a即為全域變數
void main (int argc, char* argv[]) {
int a = 1;
std::cout << "a = " << a << std::endl; // 這裡調用的會是區域變數a,因此打印出來的值會是1,而不是0
}
Last updated: