C語言變數作用域

2021-10-05 16:56:57 字數 1177 閱讀 1196

作用域描述程式中可訪問識別符號的區域。乙個c變數的作用域可以是塊作用域,函式作用域,函式原型作用域或檔案作用域。

int

fun(

int a)

//q作用域結束

}

在這個例子中,q的作用域只在內層塊,只有內層塊中的**才能訪問q。

在c99中,把塊的概念擴充套件到for迴圈,while迴圈,do-while迴圈和if語句所控制的**當中。即使沒有這些**用花括號括起來,也算是塊的一部分。

for

(int i =

0; i < n; i++

)// i的作用域僅限於for迴圈。一旦程式離開for迴圈,就不能再訪問i

printf

("%d"

, i)

;

int fun(int a, int b);
函式原型作用域的範圍是從形參的定義處到原型宣告結束。編譯器在處理函式原型中的形參時只關心它的型別,形參名則無關緊要。

#include

int a =2;

//a具有檔案作用域

void

fun(

void

)int

main

(void

)

這個例子中,a具有檔案作用域,main()fun()都可以使用它。由於這樣的變數可以作用於多個函式,所以檔案作用域變數也稱作全域性變數。

int a =1;

//檔案作用域,外部鏈結

static

int b =2;

//檔案作用域,內部鏈結

intmain()

儲存類別

儲存期作用域

鏈結宣告方式

自動自動

塊空鏈結

塊內暫存器自動塊

空鏈結塊內,使用關鍵字register

靜態外部鏈結

靜態檔案

外部鏈結

所有函式外

靜態內部鏈結

靜態檔案

內部鏈結

所有函式外,使用關鍵字static

靜態空鏈結靜態塊

空連線塊內,使用關鍵字static

C語言變數的作用域

什麼叫做 塊呢?塊就是我們在復合語句中的就要 塊,在 塊中的auto 自動變數 是無法超出這個範圍的,一旦超出了這個範圍的話就會消失它的作用,比如 void main 這個main函式的花括號就是乙個 塊,而我們要在它的裡面再定義乙個 塊 這個就是乙個 塊,這是個內部的 塊,雖然是寫在main函式裡...

C語言變數的作用域

作用域是程式中定義的變數存在 或生效 的區域,超過該區域變數就不能被訪問。c語言中有四種地方可以定義變數。1 在所有函式外部定義的是全域性變數。2 在標頭檔案中定義的是全域性變數。3 在函式或語句塊內部定義的是區域性變數。4 函式的引數是該函式的區域性變數。順便解釋一下,函式的宣告和函式的定義是兩個...

C語言變數的作用域

作用域是程式中定義的變數存在 或生效 的區域,超過該區域變數就不能被訪問。c語言中有四種地方可以定義變數。1 在所有函式外部定義的是全域性變數。2 在標頭檔案中定義的是全域性變數。3 在函式或語句塊內部定義的是區域性變數。4 函式的引數是該函式的區域性變數。順便解釋一下,函式的宣告和函式的定義是兩個...