識別符號的作用域

2021-06-17 22:05:56 字數 1487 閱讀 6963

塊作用域

(區域性作用域)

檔案作用域

(全域性作用域)

函式原型作用域

函式作用域

類作用域

塊作用域

塊是函式中一對花括號(包括函式定義所使用的花括號)所括起的一段區域。在塊內說明的識別符號具有塊作用域,它開始於識別符號被說明的地方,並在標誌該塊結束的右花括號處結束。如果乙個塊內有乙個巢狀塊,並且該塊內的乙個識別符號在巢狀塊開始之前說明,則這個識別符號的作用域包含巢狀塊。函式的形參具有塊作用域,其開始點在標誌函式定義開始的第乙個左花括號處,結束於 標誌函式定義結束的右花括號處,例如:

void f( int x ) {

//形參互的作用域開始於此

int y=3; //區域性變數y的作用域開始於此

int k;//k的作用域開始於此 }

檔案作用域

在函式和類之外說明的識別符號具有檔案作用域,其作用域從說明點開始,在檔案結束處結束。 如果識別符號出現在標頭檔案的檔案作用域中,則它的作用域擴充套件到嵌入了這個標頭檔案的程式檔案中 ,直到該程式檔案結束。檔案作用域包含該檔案中所有的其他作用域。 在同一作用域中不能說明相同的識別符號。 識別符號的作用域和其可見性經常是相同的,但並非始終如此。例如:

#include

int i;//檔案作用域

void main()

cout<< "i=" << i; //輸出5 }

在這個程式中,最外層的i有檔案作用域,最內層的i有塊作用域,最內層的i隱藏最外層的i, 這時在最內層無法訪問檔案作用域的i。 通過使用作用域運算子::,可以在塊作用域中訪問被隱藏的檔案作用域中的名字,例如:

#include

int i;

void main()

cout<< "i=" << i; //輸出1 }

變數可以在檔案作用域或塊作用域中說明,在檔案作用域中說明的變數稱全域性變數,在塊作用 域中說明的變數稱區域性變數。函式只能在檔案作用域中進行定義,但可以在檔案作用域或塊作用域 內進行函式說明。注意,列舉成員的作用域在括起它們的花括號之外,和列舉標記有相同的作用域。例如:

enum bool ;

bool x=true;

int false; //錯,與列舉常量名衝突

函式原型作用域

在函式說明的參數列中說明的識別符號具有函式原型作用域,該作用域終止於函式原型說明的末尾。例如:

int sum ( int first , int second );

second=0; //錯,識別符號second在此不可見

函式作用域

具有函式作用域的識別符號在該函式內的任何地方可見。在c++中,只有goto語句的標號具有 函式作用域。因此,標號在乙個函式內必須唯一。例如,下面的程式由於在函式中說明了兩個同名的標號,因而是錯誤的。

void f()

C 識別符號的作用域

轉 包括 區域性作用域 全域性作用域 檔案作用域 函式作用域 函式原型作用域 名空間作用域 類作用域 注意 潛在作用域,也就是同名變數的作用域問題。1.區域性作用域 指在函式定義或者復合語句中,從識別符號的定義點開始到函式或者復合語句結束之間的程式段。在同乙個區域性作用域內不能出現相同名字的兩個區域...

識別符號的作用域,鏈結,儲存

2.識別符號的生存期 3.識別符號的儲存 4.extern的使用 翻譯單元 源 檔案.c 其所有標頭檔案.h 不細講 示例 int glogal 1 外部鏈結 全域性作用域 static int file 2 內部鏈結 檔案作用域 int main 識別符號的四大儲存期 具有靜態儲存期的變數在程式執...

C語言中的識別符號作用域

2018 01 15 建立人 ruo xiao com程式中該識別符號可以使用的區域。例如 函式內的區域性變數的作用域僅限於函式體本身。說明了兩點 1 其他的函式無法通過該變數名訪問它們。2 只要分屬不同的作用域,不同的變數可以起相同的名字,並且可以位於相同的位址。檔案作用域 函式作用域 塊作用域和...