C語言 C 全域性變數與區域性變數

2022-09-17 04:15:09 字數 1086 閱讀 7398

之前寫過《j**a:全域性變數(成員變數)與區域性變數》(的文章,但由於附帶了許多j**a的知識,比如static關鍵字等對於初學者沒必要的贅述,這裡所以再寫一篇十分簡單明瞭的《全域性變數與區域性變數》(只涉及基本語言c語言)讓讀者快速入門與理解使用。

話不多說,直接乾貨 ↓ 

全域性變數是指在定義之後的所有程式段內都有效的變數(即定義在所有函式之前〉,例如下面這個例子:

#include int x; //main函式外定義的x

void change()

int main()

輸出結果:

11
在上述**中 ,把x定義在所有函式的前面, 這樣在 x定義之後的所有程式段都共用這個x, 所以當主函式對x賦值為10 之後, 使用change()函式可以改變x 的值, 從而令x 變為11

與全域性變數相對,區域性變數定義在函式內部,且只在函式內部生效,函式結束時區域性變數銷毀, 示例如下:

#include void change(int x) 

int main()

輸出結果:

10
可以看到,當在主函式中定義了x 之後,將其作為change()函式的引數傳入,並令x加1,但是最後輸出時 x 卻仍然是10。這是因為change函式的引數x 為區域性變數 ,僅在函式內部生效, 通過change(x) 傳進去的 x 其實只是傳進去乙個副本(就理解成另外乙個世界的x就行  反正你別把它當原來x就行  只是它們的名字和所攜帶的值是一樣的  其實已經是兩個人了), 也即 change函式的引數x和main 函式裡的x其實是作用於兩個不同函式的不同變數(雖然 名字相同〉,取成不同的名字當然是可以的。這種傳遞引數的方式就叫做值傳遞(相當於我把我所攜帶的資訊內容複製給你一遍  而不是我把我給你【這一類稱為位址傳遞】),函式定義的小括號內的引數稱為形式引數或形參,而把實際呼叫時小括號內的引數稱為實際引數或實參。

因此, 如果想要讓定義的變數對所有函式都有用, 最好還是使用全域性變數的定義方式。

C 全域性變數與區域性變數

lession1.h extern bool a extern int b extern float c extern double d extern unsigned int e extern long f extern unsigned long g extern char h extern l...

全域性變數與區域性變數 C

區域性變數 作用域 函式內 包括形參 或 塊內 定義 函式內,包括形參,塊內 生命週期 從定義的那行開始分配記憶體,直至其所屬 塊內的最後一行結束或者return結束 儲存位置 儲存在棧中,當作用域結束後會自動釋放的區域性變數 注意 不同的作用域可以定義相同的區域性變數,否則不可.未初始化則預設值是...

c 全域性變數 區域性變數

全域性變數即在函式外宣告的變數,區域性變數即在函式內部宣告的變數,例如 include float num 3.14 乙個名為num的全域性變數 void main float num 2.45 乙個名為num的區域性變數 cout3.14 當區域性變數和全域性變數同名時,在區域性變數作用域內使用該...