c 作用域與可見域

2022-07-16 07:30:13 字數 864 閱讀 8580

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 的作用域主要有四種 函式原型作用域 塊作用域 類作用域和檔案作用域。識別符號的可見性是指在程式的某個地方是否是有效的,是否能夠被引用被訪問。程式執行到某一處時,...