一.全域性變數
1.定義:定義在函式外面的變數是全域性變數。
2.初始化:初始化在main函式之前,沒做初始化的全域性變數會得到0值。
3.如果函式內部存在於全域性變數同名的變數,則全域性變數會被隱藏。
二.靜態本地變數
1.定義:在本地變數定義時加上static修飾符
2.作用:當函式離開的時候,靜態本地變數會繼續存在並保持其值。
三.二者的聯絡
1.全域性變數具有全域性的生存期和作用域,與任何函式無關,在函式內部都可以。本地變數有本地的作用域與生存期,靜態本地變數有全域性的生存期,本地作用域。
2.區域性靜態變數是特殊的全域性變數,位於相同的記憶體區域。
3.返回本地變數是危險的
//用本地變數的位址作為返回值不可取
#include
int*f
(void);
voidg(
void);
intmain
(int argc,
char
const
*ar**)
int*f(
void
)voidg(
void
)
注意:應儘量減少全域性變數的使用 c語言全域性變數與靜態本地變數
目錄 全域性變數 靜態本地變數 一 定義 定義在函式外面的變數是全域性變數 全域性變數具有全域性的生存期和作用域 他們與任何函式都無關 在任何函式內部都可以使用他們 實驗 int f void int gall 12 乙個全域性變數 也就是全域性變數一改都改 二 全域性變數的初始化 沒有做初始化的全...
C 靜態全域性變數與普通全域性變數
一 儲存區域 1 棧 由編譯器在需要的時候分配,在不需要的時候自動清除的變數的儲存區域。通常儲存區域性變數,函式引數。2 堆 由new分配的記憶體塊,需要手動釋放。如果程式設計師沒有手動釋放,在程式執行結束後,作業系統自動 3 自由儲存區 由malloc等分配的記憶體塊,與堆相似,用free來釋放。...
c 全域性變數 靜態全域性變數
全域性變數是靜態儲存方式,靜態全域性變數也是靜態儲存方式,這兩者在儲存方式上並無不同。區別 雖在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,靜態全域性變數在各個原始檔中都是有效的。靜態區域性變數則限制了其作用域,只在定義該變數的原始檔內有效,在同一源程式的其它原始檔中不能...