C C 中作用域

2021-10-04 10:11:16 字數 855 閱讀 1220

當變數在程式中的某個部分被宣告時,它只有在程式的一定區域才能被訪問。這個區域由識別符號的作用域(scope)決定。識別符號的作用域就是程式中該識別符號可以被使用的區域。例如,函式的區域性變數的作用域侷限於該函式的函式體。

編譯器可以確認4種不同型別的作用域:檔案作用域、函式作用域、**塊作用域和原型作用域。

識別符號宣告的位置決定它的作用域。

位於一對花括號之間的所有語句稱為乙個**塊。任何在**塊的開始位置宣告的識別符號都具有**塊作用域(block scope),表示它們可以被這個**塊中的所有語句訪問。

任何在所有**塊之外宣告的識別符號都具有檔案作用域(filescope),它表示這些識別符號從它們宣告之處直到它所在的原始檔結尾都是可以訪問的。

在標頭檔案中編寫並通過#include 指令包含到其他檔案中的宣告就好像它們是直接寫在那些檔案中一樣。它們的作用域並不侷限於標頭檔案的檔案尾。

何為函式原型,就是函式的宣告,它與函式定義不同。

原型作用域(prototype)只適用於在函式原型中宣告的引數名。在原型中,引數的名字並非必需。但是,如果出現引數名,你可以隨意給它們取任何名字,它們不必與函式定義中的形參名匹配,也不必與函式實際呼叫時所傳遞的實參名匹配。原型作用域防止這些引數名與程式中其他部分的名字衝突。事實上,唯一可能出現的衝突就是在同乙個原型中不止一次地使用同乙個名字。

涉及goto語句,「c和指標」這本書這麼說的,它只適合於語句標籤,語句標籤用於goto語句。基本上,函式作用域可以簡化為一條規則:乙個函式中的所有語句標籤必須唯一。並希望永遠不要用到這個知識。

注意:static不會改變區域性變數的作用域,如果是靜態區域性變數,其作用域為一對{}內,如果是靜態全域性變數,其作用域為當前檔案

C C 中作用域詳解

c c 中作用域詳解 作用域規則告訴我們乙個變數的有效範圍,它在哪兒建立,在哪兒銷毀 也就是說超出了作用域 變數的有效作用域從它的定義點開始,到和定義變數之前最鄰近的開括號配對的第乙個閉括號。也就是說,作用域由變數所在的最近一對括號確定。1 全域性變數 全域性變數是在所有函式體的外部定義的,程式的所...

C C 中作用域詳解

作用域規則告訴我們乙個變數的有效範圍,它在哪兒建立,在哪兒銷毀 也就是說超出了作用域 變數的有效作用域從它的定義點開始,到和定義變數之前最鄰近的開括號配對的第乙個閉括號。也就是說,作用域由變數所在的最近一對括號確定。1 全域性變數 全域性變數是在所有函式體的外部定義的,程式的所在部分 甚至其它檔案中...

C C 中作用域詳解

作用域規則告訴我們乙個變數的有效範圍,它在哪兒建立,在哪兒銷毀 也就是說超出了作用域 變數的有效作用域從它的定義點開始,到和定義變數之前最鄰近的開括號配對的第乙個閉括號。也就是說,作用域由變數所在的最近一對括號確定。1 全域性變數 全域性變數是在所有函式體的外部定義的,程式的所在部分 甚至其它檔案中...