關於變數的作用域和儲存方式

2021-10-05 02:12:51 字數 1182 閱讀 8853

變數的作用域和儲存方式:

按作用域分:

全域性變數

在所有函式外部定義的變數叫全域性變數

全域性變數適用範圍: 從定義位置開始到整個程式結束

區域性變數

在乙個函式內部定義的變數或者函式的形參,統稱為區域性變數

void f (int i)

i 和j 都是區域性變數

區域性變數使用範圍: 只能在本函式內部使用

/*

date: 20/04/15 12:57

description: 全域性變數 和 區域性變數

一定要明白該程式為何是錯的

把 3-6 行**放在 8 行後面,為什麼程式就 ok 了

*/# include

voidg(

)//第 3 行

//第 6 行

int k =

1000

;//第 8 行

voidf(

void

)int main (

void

)

注意的問題:

全域性變數和區域性變數命名衝突的問題:

在乙個函式內部如果定義的區域性變數的名字和全域性變數名一樣時,區域性變數會自定遮蔽掉全域性變數

# include

int i =

1000

;// i 是全域性變數

voidf(

int i)

// i 是區域性變數,會自動遮蔽掉全域性變數

int main (

void)

在devc++中輸出的結果是

----

----

----

----

----

i =100

----

----

----

----

----

按變數的儲存方式分:

靜態變數

自動變數

暫存器變數

變數的作用域和儲存方式

按作用域可分為 區域性變數 函式級區域性變數,復合語句級區域性變數,這種型別的變數在本函式或本復合語句內有效,在其他範圍內無效。按儲存方式可分為 靜態儲存區儲存 全域性變數和static區域性變數全部存放在靜態儲存區,從定義開始占用記憶體一直到本檔案結束釋放記憶體,存放在靜態儲存區的區域性變數並不隨...

變數儲存型別 作用域

auto 作用域和壽命 只能做區域性變數 在函式內或復合語句內定義的自動變數可以省略auto,而在外部定義的無auto的變數顯然不是自動變數 外部變數,即 全域性變數 的壽命和作用域是全域性的 register 作用域和壽命 同auto,即 區域性可見 分配通用暫存器的條件 1 有空閒的暫存器 2 ...

變數的作用域 鏈結和儲存時期

自動變數具有 塊作用域 空連線和自動儲存時期。它們是區域性的,為定義它們的 塊 通常是乙個函式 所私有。暫存器變數與自動變數具有相同的屬性,但編譯器可能使用速度更快的記憶體或暫存器來儲存它們。無法獲取乙個暫存器變數的位址。具有靜態儲存時期的變數可能具有外部鏈結 內部鏈結或空連線。當變數在檔案的所有函...