作用域與鏈結屬性

2021-07-08 15:44:49 字數 1029 閱讀 5864

december 6, 2015 11:23 am

1.作用域

檔案作用域:從申明位置開始到問價結束

原型作用域:從申明開始到結束,僅限於申明處,主要用於防止引數重名

**塊作用域:位於一對花括號之內,從申明開始到右花括號

函式作用域:只有語句標號屬於函式作用域,,不需要先申明再使用,乙個函式所有語句標籤唯一

2.鏈結屬性

原始檔被分別編譯之後,所有目標檔案、庫檔案鏈結之後成為可執行檔案。鏈結屬性決定不同原始檔中同名識別符號的鏈結方式,鏈結屬性僅第一次申明有效。

鏈結屬性

含義external

不同檔案相同識別符號屬於同乙個實體。(全部變數,函式名預設為external)

internal

用乙個原始檔相同識別符號屬於同乙個實體(static只對屬性為external的有效,一般修飾函式)

none

相同識別符號屬於單獨個體(區域性變數預設為none)

3.儲存型別

變數的儲存型別指儲存變數的記憶體型別,決定了變數合適何時建立、何時銷毀以及他的值儲存多久。

儲存型別

含義static

靜態儲存,位於普通記憶體,**塊之外申明的變數、靜態變數預設為static,程式執行前建立,執行期間已知一直存在。形參不可用static修飾

auto

自動儲存,位於堆疊,**塊內部申明的區域性變數預設為auto,形參傳遞在堆疊中進行,用於支援遞迴所以形參一定為auto型別

register

位於硬體暫存器,提高執行效率,申明後編譯器根據需要確定是否需要分配暫存器

4.總結

變數型別

申明位置

是否存於堆疊

作用域宣告為static

全域性**快之外

否申明到結束

不允許其他檔案訪問

區域性**塊起始

是整的**塊

不存於堆疊,執行期間一直存在

形參函式頭

是整個函式

不允許,堆疊傳遞函式否

不允許其他檔案訪問

C中的鏈結屬性及作用域

如果相同的識別符號出現在幾個不同的原始檔中時,它們是表示相同的實體,還是不同的實體。識別符號的鏈結屬性決定如何處理在不同檔案中出現的識別符號。識別符號的作用域與它的鏈結屬性有關。鏈結屬性一般有三種 external 外部,internal 內部,none 無。沒有鏈結屬性的識別符號總是被當作單獨的個...

C 作用域 鏈結屬性和儲存型別

變數在程式的某個部分宣告時,只能在程式的一定區域內才能訪問,這個區域就成為作用域。作用域分為四種 檔案作用域 函式作用域 塊作用域和原型作用域。編譯器通過變數宣告的位置來確定作用域 當變數在所有 塊之外宣告時就在檔案作用域中,檔案作用域的範圍是從變數宣告處一直到檔案的結束。但如果宣告在 h 檔案中,...

儲存類 作用域 生命週期 鏈結屬性

補充 1 儲存類就是儲存型別,也就是描述c語言變數在何種地方儲存。2 記憶體有多種管理方法 棧 堆 資料段 bss段 text段 段 乙個變數的儲存類屬性就是描述這個變數儲存在何種記憶體段中。1 作用域是描述這個變數起作用的 範圍。2 基本來說,c語言變數的作用域規則是 塊作用域。1 生命週期是描述...