四種作用域

2021-10-05 16:46:39 字數 1422 閱讀 6927

當程式較大時,需要考慮將程式分解成若干個部分,此時檔案和函式之間的識別符號可能會遇到重名衝突,所以要對識別符號的作用範圍進行更為細緻的考慮和規劃。 根據c語言識別符號的作用範圍,可以將作用域分為4種:函式原型作用域,函式作用域,塊作用域和檔案作用域。下來我們就來介紹一下這四種作用域。

它指的是在宣告函式原型時所指定的引數識別符號的作用範圍。因為作用範圍是小括號內,所以函式原型宣告中的識別符號可以與函式定義中說明的識別符號名稱不同。只要讓函式宣告和函式定義中小括號內每個變數的型別及數目一致即可,也可以省略掉引數名(函式定義在後,呼叫在前)

double

max(

double x,

double y)

;double

max(

double

,double);

//兩者均可

塊作用域也稱為區域性作用域,也就是語句塊的作用域。一般在函式中起到分割的作用。

//b的作用域結束處

}//a的作用域結束處

void fun()

printf

(「i1 =

%d」, i)

;//i的值為0

}

在函式內部定義的一些變數,只能在函式內部使用。一旦離開了這個函式,就必須重新定義。可以把函式想成乙個塊。然後套用塊作用域的定義。

在所有函式外定義的識別符號稱為全域性識別符號,定義的變數稱為全域性變數。全域性識別符號的作用域是檔案作用域,即從它宣告開始到檔案結束都是可見的。識別符號的檔案作用域一般有一下三種情況。

全域性常量或全域性變數的作用域是從定義開始到源程式檔案結束。

const

float pi =

3.14

;int a =0;

intmain()

因為函式的定義中包含了函式宣告,所以一旦宣告了函式原型,函式識別符號的作用域就從定義開始到源程式檔案結束。

void

funa

(int x)

;//函式funa的作用域從此開始到檔案結束

void

funb()

intmain()

void

funa

(int x)

對於在標頭檔案中定義的識別符號,當她們被預編譯時,會將標頭檔案的內容在原始檔的相應位置展開,所以在標頭檔案中定義的識別符號的作用域可以看成從#include標頭檔案開始的位置到源程式檔案結束。

例如:stdio.h裡的printf和scanf的作用域就是從#include預處理指令開始一直到源程式檔案結束。

PYTHON的四種作用域

作用域又可以被稱為命名空間,指變數起作用的範圍。python變數作用域可以分為四種,分別為區域性作用域 巢狀作用域 全域性作用域 內建作用域。python的四種所用域及其呼叫順序,當使用某一變數時,首先在函式內部進行搜尋 區域性作用域 l 搜尋不到便到上層函式或類中進行查詢 巢狀作用域 e 再查詢不...

C語言中的四種作用域

c語言編譯器可以確認四種不同型別的作用域 一.塊作用域。在k r c中,函式形參的作用域始於形參的宣告處,位於函式體之外如果函式體內部宣告了名字相同的區域性變數,他們就將隱藏起來 ansi c遏止了這種錯誤的可能性,它把形參的作用域設定為整個函式體。二.檔案作用域。任何在 塊之外宣告的識別符號都具有...

spring bean的四種常用作用域

spring的 bean有5種作用域分別是 singleton prototype request session和globalsession spring 起初的版本只有singleton,也就是是否是單例模式。作用域包括 singleton 全域性只有乙個例項 prototype 每次呼叫產生乙...