變量的存儲類型有4種,分別是static、external、register、auto,對于每一種存儲類型,他們都有相應的使用方式和特點,下面就分別對這四種存儲類型介紹一下:
1.static靜態型(可以修飾局部變量、全局變量、函數)
a.存放在靜態區,靜態區的數據未初始化時,由系統給該變量賦初值,初始值為0
b.限定作用域(修飾局部變量限制在局部范圍;修飾全局變量限制在整個文件)
c.修飾的變量只會被初始化一次,且每次使用的變量都是上一次運算后的值 d.聲明周期為從程序開始運行到結束為止
舉例:
#include
void fun();
int main(int argc, const char *argv[])
{
fun(); //a = 0
fun(); //a = 1
fun(); //a = 2
return 0;
}
void fun()
{
static int a;
printf("a:%d\n", a);
a++;
}
2.extern:外部引用型,
a.可以聲明一個外部變量(不在本文件中)
b.聲明的外部變量必須和使用外部變量的文件處于同一目錄下,并一起編譯
舉例:
extern.c:
#include
extern int a;
extern int b;
nt main(int argc, const char *argv[])
{
printf("a:%d b:%d\n", a, b);
return 0;
}
Test.c
int a = 4;
int b = 3;
3. auto:自動型變量:
a.存放在棧區,棧區數據在未初始化的情況下為隨機值;
b.隨著作用域的結束,棧會回收變量的存儲空間;
c.auto只能修飾局部變量
4. register:寄存器變量
a.聲明的變量是放在寄存器中的,但是寄存器數量有限,不容易申請到空間
b.如果申請不到就使用一般內存,同auto
這里簡單的把這四種變量的存儲類型介紹一下,主要是因為這幾個在筆試面試中會經常考到的,所以整理下來供大家去參考。