c++作用域可分為5類:函式原型作用域、塊作用域、類作用域、檔案作用域和全域性(程式)作用域(跨檔案)。
1. 函式原型作用域(最小的作用域)
函式原型:int func(int x); 這是乙個函式宣告,函式形參x 的作用域就時所謂的函式原型作用域。
2. 塊作用域
一對大括號 內的一段程式,塊中宣告的識別符號作用域就是塊作用域。
3. 類作用域
類成員的作用域。
4. 檔案作用域(static)
全域性靜態變數具有全域性作用域,從宣告處開始,到檔案(.cpp檔案)結尾處結束。
5. 全域性(程式)作用域(extern)
全域性變數具有全域性作用域,只要在使用前對其進行宣告(可定義性宣告/引用性宣告),便可在程式(有若干個檔案組成)的任意位置使用全域性變數。
作用域指的是變數理論上有效的源**區域,而可見域指的是該變數實際的記憶體區域。如果沒有遮蔽發生,可見域和作用域應該是等價的。
只有在可見域內才能對變數進行合法的訪問。
引用宣告不能提供全域性可見性(不具備跨檔案性質),這意味著,在使用全域性變數之前,必須在當前檔案或當前塊中進行引用宣告。
內部靜態變數(區域性static)的作用域、可見域及遮蔽法則和自動變數一樣,但外部靜態變數需要注意:在乙個檔案中宣告的外部靜態變數(全域性static),將遮蔽其他檔案中定義的同名全域性變數。但是,不允許在同乙個檔案中定義同名的全域性變數和外部靜態變數。
預設情況下,函式是全域性的,可以在不同的檔案中共享。和全域性變數一樣,使用函式前必須要對其進行宣告(包含有函式宣告的標頭檔案)。
可使用static關鍵字將函式宣告為檔案內部的,這樣,只能在本檔案中使用該函式,在函式定義和宣告中都要使用static關鍵字。static函式將遮蔽其他檔案中外部定義的同名函式。
變數的作用域與可見性
1.基本概念 變數有資料型別 char unsigned char short unsigned short int unsigned int long unsigned long float double 定義變數 int a 100 自動分配4位元組的記憶體空間,其中儲存100 2.從作用域與可...
C 中 作用域及可見性
作用域是用來表示某個識別符號在什麼範圍內有效,可見性是指識別符號是否可見,可引用。1.作用域 作用域是這樣乙個區域,識別符號在程式的這個區域內是有效的。c 的作用域主要有四種 函式原型作用域 塊作用域 類作用域和檔案作用域。a.函式原型作用域 函式原型大家還記得嗎?比如 void fun int x...
C 基本概念辨析 作用域與可見性
看來網上相當多的人把作用域視同可見性,然而在教程上卻把二者講的有所區別。如下 作用域是這樣乙個區域,識別符號在程式的這個區域內是有效的。c 的作用域主要有四種 函式原型作用域 塊作用域 類作用域和檔案作用域。識別符號的可見性是指在程式的某個地方是否是有效的,是否能夠被引用被訪問。程式執行到某一處時,...