auto:默認(rèn),自動(dòng)分配空間,自動(dòng)回收空間
創(chuàng)新互聯(lián)總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有成都做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)站維護(hù)、公眾號(hào)搭建、小程序開發(fā)、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動(dòng)行銷領(lǐng)域創(chuàng)造價(jià)值而不懈努力!register:
1. register變量必須是能被CPU寄存器所接受的類型,這通常意味著register變量必須是一個(gè)單個(gè) 的值,并且其長(zhǎng)度應(yīng)小于或等于整型的長(zhǎng)度。這與處理器的類型有關(guān)。
2. 聲明為register僅僅是一個(gè)請(qǐng)求,而非命令,因此變量仍然可能是普通的自動(dòng)變量,沒有放在 寄存器中。
3. 由于變量有可能存儲(chǔ)在寄存器中,因此不能用取地址運(yùn)算符“&”獲取register變量的地址。 如果有這樣的寫法,編譯器會(huì)報(bào)錯(cuò)。
4. 只有局部變量和形參可以作為register變量,全局變量不行。
5. 實(shí)際上有些系統(tǒng)并不把register變量存放在寄存器中,而優(yōu)化的編譯系統(tǒng)則可以自動(dòng)識(shí)別使用 頻繁的變量而把他們放在寄存器中。
static:靜態(tài)型
1.自動(dòng)初始化為0值或空值,并值其變量的值有繼承性
void func(void)
{
static int x = 0;
x = x + 1;
printf("%p->%d\n",&x,x);
}
int main()
{
func();
func();
func();
}
Result:
1
2
3
備注:這里的static就具有繼承性,意思第一次定int x,下次再調(diào)用的時(shí)候就不再調(diào)用
2.限制作用域范圍
main.c
#include
#include
#include "proj.h"
static int i = 10;
int main()
{
printf("[%s]:i = %d\n",__FUNCTION__,i);
//__FUNCTION__表示是哪個(gè)函數(shù)
func();
exit(0);
}
proj.h
#ifndef PROJ_H__
#define PROJ_H__
void func(void);
#endif
proj.c
#include
#include
#include "proj.h"
static int i = 100;
void func(void)
{
printf("[%s]:i= %d\n",__FUNCTION__,i);
exit(0);
}
Result:
[main]:i = 10
[func]:i = 100
注意static
1.以上如果變量i不加static會(huì)在編譯的時(shí)候會(huì)出現(xiàn)變量沖突,
加了static表示只能在當(dāng)前文件中使用
2.如果在void func(void)加一個(gè)static 表示只能在當(dāng)前文件中調(diào)用,
在其他文件中不能調(diào)用,如上面main.c
extern:說明型
不能改變被是一個(gè)說明的變量的值或類型
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。