- C++ 基礎
- C++ 首頁
- C++ 概述
- C++ 環境設定
- C++ 基本語法
- C++ 註釋
- C++ Hello World
- C++ 省略名稱空間
- C++ 常量/字面量
- C++ 關鍵字
- C++ 識別符號
- C++ 資料型別
- C++ 數值資料型別
- C++ 字元資料型別
- C++ 布林資料型別
- C++ 變數型別
- C++ 變數作用域
- C++ 多個變數
- C++ 基本輸入/輸出
- C++ 修飾符型別
- C++ 儲存類
- C++ 運算子
- C++ 數字
- C++ 列舉
- C++ 引用
- C++ 日期和時間
- C++ 控制語句
- C++ 決策
- C++ if 語句
- C++ if else 語句
- C++ 巢狀 if 語句
- C++ switch 語句
- C++ 巢狀 switch 語句
- C++ 迴圈型別
- C++ while 迴圈
- C++ for 迴圈
- C++ do while 迴圈
- C++ foreach 迴圈
- C++ 巢狀迴圈
- C++ break 語句
- C++ continue 語句
- C++ goto 語句
- C++ 建構函式
- C++ 建構函式和解構函式
- C++ 複製建構函式
- C++ 檔案處理
- C++ 檔案和流
- C++ 從檔案中讀取
C++ 中的變數作用域
作用域是程式的一個區域,廣義上講,變數可以在三個地方宣告:
在函式或塊內,稱為區域性變數;
在函式引數定義中,稱為形式引數;
在所有函式之外,稱為全域性變數;
C++ 變數作用域主要分為兩類:
- 區域性變數
- 全域性變數
我們將在後續章節學習什麼是函式及其引數。這裡讓我們解釋一下區域性變數和全域性變數。
區域性變數
在函式或程式碼塊內宣告的變數是區域性變數。只有函式或程式碼塊內的語句才能使用它們。區域性變數對於函式外部是未知的。
示例
以下是使用區域性變數的示例:
#include <iostream>
using namespace std;
int main () {
// Local variable declaration
int a, b;
int c;
// actual initialization
a = 10;
b = 20;
c = a + b;
cout << c;
return 0;
}
全域性變數
全域性變數定義在所有函式之外,通常位於程式的頂部。全域性變數將在程式的整個生命週期中保持其值。
任何函式都可以訪問全域性變數。也就是說,全域性變數在其聲明後即可在整個程式中使用。
示例
以下是使用全域性變數和區域性變數的示例:
#include <iostream>
using namespace std;
// Global variable declaration
int g;
int main () {
// Local variable declaration
int a, b;
// actual initialization
a = 10;
b = 20;
g = a + b;
cout << g;
return 0;
}
區域性變數和全域性變數同名
程式可以為區域性變數和全域性變數使用相同的名稱,但函式內部區域性變數的值將優先。
示例
#include <iostream>
using namespace std;
// Global variable declaration
int g = 20;
int main () {
// Local variable declaration
int g = 10;
cout << g;
return 0;
}
編譯並執行上述程式碼後,會產生以下結果:
10
訪問全域性變數
當存在同名區域性變數時,可以使用**作用域解析運算子** **::** 在變數名前訪問全域性變數。
示例
在下面的示例中,我們具有同名的全域性變數和區域性變數,並訪問和列印全域性變數的值:
#include <iostream>
using namespace std;
// Global variable declaration:
int g = 20;
int main() {
// Local variable declaration:
int g = 10;
cout << "Value of g (Local variable): " << g;
cout << endl;
cout << "Value of g (Global variable): " << ::g;
return 0;
}
編譯並執行上述程式碼後,會產生以下結果:
Value of g (Local variable): 10 Value of g (Global variable): 20
初始化區域性變數和全域性變數
定義區域性變數時,系統不會對其進行初始化,必須自行初始化。全域性變數在定義時會由系統自動初始化,如下所示:
| 資料型別 | 初始化值 |
|---|---|
| int | 0 |
| char | '\0' |
| float | 0 |
| double | 0 |
| 指標 | NULL |
良好的程式設計習慣是正確初始化變數,否則有時程式會產生意想不到的結果。
廣告