在标準的C中,變量大概可以分為全局變量(用extern修飾),靜态變量(用static修飾),局部變量三中類型.
在記憶體中用于存儲變量的空間也可以分為堆區、棧區、全局區(靜态區)。其中堆區:一般由程式員配置設定釋放, 若程式員不釋放,程式結束時可能由OS回收,一般存放malloc()函數申請請的變量空間;棧區:由編譯器自動配置設定釋放 ,存放函數的參數值,局部變量的值等;全局區(靜态區):全局變量和靜态變量的存儲是放在一塊的,初始化的全局變量和靜态變量在一塊區域, 未初始化的全局變量和未初始化的靜态變量在相鄰的另一塊區域。
驗證:靜态變量與全局變量都存放在同一片區域當中
#include<iostream.h>
/* 全局變量 */
extern int iTx = 1;
void main()
{
/* 靜态變量 */
static int iSTx = 2;
/* 局部變量 */
int ijx = 3;
cout<< &iTx <<endl;
cout<< &iSTx <<endl;
cout<< &ijx <<endl;
}
輸出的結果:
0x0042AD50
0x0042AD54
0x0012FF7C
從這裡可以看出iSTx和iTx是存放在同一片連續的記憶體空間當中,相差4個單元長度。其他存儲區的驗證方法以之相識。