變量的存儲類型
時(shi)間:2018-09-27 來源:未知
變(bian)量(liang)的存(cun)(cun)儲類型(xing)有4種(zhong),分別(bie)是static、external、register、auto,對于(yu)每(mei)一(yi)種(zhong)存(cun)(cun)儲類型(xing),他們(men)都(dou)有相(xiang)應的使用方式和(he)特點,下(xia)面就(jiu)分別(bie)對這(zhe)四(si)種(zhong)存(cun)(cun)儲類型(xing)介紹一(yi)下(xia):
1.static靜態型(可以修飾局部變(bian)量、全局變(bian)量、函數)
a.存放在靜態(tai)區,靜態(tai)區的(de)數據未(wei)初始(shi)(shi)化時,由系統給(gei)該變量賦初值,初始(shi)(shi)值為0
b.限定(ding)作(zuo)用域(修飾局部變量限制在局部范(fan)圍;修飾全(quan)局變量限制在整個文件)
c.修飾的變(bian)量只會被初始化(hua)一次(ci)(ci)(ci),且每次(ci)(ci)(ci)使用(yong)的變(bian)量都是(shi)上一次(ci)(ci)(ci)運算(suan)后的值 d.聲明(ming)周期為從程序開始運行到結束為止(zhi)
舉例:
#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.可以聲(sheng)明一個外部變量(不在本文件中)
b.聲明的外部變(bian)(bian)量必(bi)須(xu)和使用外部變(bian)(bian)量的文件處于同一目(mu)錄下,并(bing)一起編譯
舉例:
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.存放在棧區(qu)(qu),棧區(qu)(qu)數據在未初始化的情況下(xia)為隨機值;
b.隨著作用域(yu)的(de)結束,棧會回收變量的(de)存儲空間(jian);
c.auto只(zhi)能修(xiu)飾局部變量
4. register:寄存器變量
a.聲明的變量(liang)(liang)是(shi)放在寄(ji)存(cun)器中(zhong)的,但是(shi)寄(ji)存(cun)器數量(liang)(liang)有限,不容易申請到空(kong)間
b.如果申請不到就使用一般內存,同auto
這里(li)簡單的把這四(si)種變量的存儲類型介紹一下(xia),主(zhu)要是因為這幾個在筆試面試中會經常考(kao)到的,所(suo)以整理(li)下(xia)來供大家去參考(kao)。

