---
# System prepended metadata

title: 變數範圍

---

# 變數範圍
1. 全域變數const：
const類型將可以建立在函數之外(包括main)
```cpp
#include <iostream>
using namespace std;

const int a = 100; 

int main () {
    //...
}
```

2. 區域變數：
最一般的變數，不須額外加任何前綴詞
    
```cpp
int main () {
    int a = 100;
    //...
}
```

extern可以取得同資料夾的其他檔案內的變數
A.cpp
```cpp
int a = 100;
// ... 
```
Main.cpp
```cpp
int main () {
    extern int a;
    //...
}
```

:::    danger
extern取得的其他地方的變數無法立刻設定值，必須在之後設定
:::

```cpp
int main () {
    extern int a;
    a = 200;
    //...
}
```
extern除了取得變數，還可以取得函數

3. 區塊變數：
static可以用來限定該變數，讓他無法被extern

```cpp
static int a = 100;
```


# 控制結構


1. 循序結構
由上到下一行一行的執行，即是一般C++程式的執行方法
3. 選擇結構
選擇性的執行部分程式，C++中有三種：
    1. if
    2. if else
    3. switch
5. 重複結構
重複執行部分程式，C++中也有三種：
    1. for
    2. while
    3. do while
    ```cpp
    int i = 0;
    do {
    i += 1;
    cout<<i;
    } while (i < 3);
    ```
    會輸出123