全域性變數與靜態變數

2021-09-20 18:53:41 字數 680 閱讀 8994

1.全域性變數

作用域為定義處到檔案末尾,但是在程式開始就占用記憶體了。

#include#include//這樣是可以的

extern int g;

int k = 10;

int main()

int g = 10;

#include#include//這樣也是可以的,但是沒必要。

int g = 10;

extern int g;

int k = 10;

int main()

如果其他的檔案需要使用需要下列**:

extern int k;
全域性變數在程式的全部執行過程中都占用儲存單元,而不是僅在需要時才開闢單元。

使用全域性變數過多,會降低程式的清晰性。在各個函式執行時都可能改變外部變數的值,程式容易出錯。因此,要限制使用全域性變數。

降低函式的通用性。

2.靜態變數

作用域為定義處到檔案末尾,無法被其他檔案看到。

存在於資料段的靜態區(靜態儲存區)。

只會初始化一次,一直存在。

如果用static修飾全域性變數,該變數不能被其他檔案借用。static修飾函式。函式只能在本函式本檔案中使用。

所有函式都是預設extern的,可以用static限制其他檔案使用。

區域性變數,區域性靜態變數,全域性變數,全域性靜態變數分別

c 記憶體到底分幾個區?一 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式倒是類似於鍊錶,呵呵。3 全域性...

全域性變數,全域性靜態變數,區域性靜態變數,區域性變數

變數可以分為全域性變數 靜態全域性變數 靜態區域性變數和區域性變數。按照儲存區分 全域性變數 靜態全域性變數和靜態區域性變數都存放在記憶體的全域性資料區,區域性變數存放在記憶體的棧區。按作用域分 全域性變數在整個工程檔案內都有效 靜態全域性變數只在定義它的檔案內有效 靜態區域性變數只在定義它的函式內...

區域性變數,區域性靜態變數,全域性變數,全域性靜態變數分別

c 記憶體到底分幾個區?一 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式倒是類似於鍊錶,呵呵。3 全域性...