C語言可見性和生存期

2021-10-16 22:21:16 字數 553 閱讀 6673

作用域(可見性)指識別符號能夠被使用的範圍;只有在作用域內識別符號才可以被使用。此階段針對編譯和鏈結過程

1)函式中定義的識別符號,包括形參和函式體中定義的區域性變數,作用域都在該函式內,也稱作函式域。

2)檔案作用域也稱全域性作用域。定義在所有函式之外的識別符號,具有檔案作用域,作用域為從定義處到整個原始檔結束。檔案中定義的全域性變數和函式都具有檔案作用域。

生存期也叫生命期(life time)。此階段針對的是程式的執行過程。

生命期指的是識別符號從程式開始執行時被建立,具有儲存空間,到程式執行結束時消亡,釋放儲存空間的時間段。

1)區域性變數的生存期是:函式被呼叫,分配儲存空間,到函式執行結束,儲存空間釋放。儲存.stack區。

2)全域性變數的生存期是:從程式行前開始,到執行後結束。儲存在.data區。

3)動態生命期是:識別符號由特定的函式呼叫或運算來建立和釋放,如呼叫malloc()為變數分配儲存空間,變數的生命期開始,而呼叫free()釋放空間空間或程式結束時,變數生命期結束。具有動態生命期的變數儲存在堆區.heap。

學習筆記 可見性和生存期

可見性 又稱為作用域。指識別符號能夠被使用的範圍,只有在作用域內識別符號才可以被使用。作用域是針對編譯和連線過程。1 函式中定義的識別符號,包括形參和函式體中定義的區域性變數,作用域都在該函式內,也稱作函式域。2 檔案作用域也成為全域性作用域,定義在所有函式之外的識別符號,具有檔案作用域,作用域從定...

C語言理論知識 可見性,生存期

void max int x 0 void main int z 10 首先在上面的程式中,從可見性來看,第乙個函式max 中x是無法初始化的,因為在編譯過程中編譯器是一行行掃碼的,那麼max 中的x就是沒有被初始化的變數,所以這條語句沒有作用。然而對於全域性變數x,z來說,當程式剛開始執行初,x和...

c 變數的作用域 生存期和可見性

範圍 在乙個函式內部定義的變數,作用範圍只限於本函式體內。生存期 程式執行到本函式才會給區域性變數分配記憶體單元,函式執行完畢區域性變數所佔的儲存單元就被釋放 在函式體外部定義的變數是全域性變數,可以被本檔案所有其他函式訪問使用。作用域 所有檔案。在乙個cpp定義的全域性變數在另乙個cpp中使用,應...