在C語言中,變量是具有屬性的,主要有auto、static、register、extern
auto :局部變量的自動默認屬性,不需要顯示聲明,且存儲在棧上
register:寄存器變量,請求編譯器將局部變量存儲在寄存器中,由於是請求,編譯器有可能拒絕,所以儘管利用register對變量進行了修飾,但是並一定是存儲在寄存器中的,如果變量存儲在寄存器中,則不能用&取地址符。
eg:
register int j=6; //error,修飾局部變量
int main()
{
register int i=5;
printf("%x\n",&i); //error
}
static:如果修飾的是局部變量,則表明把該變量存入程序靜態存儲區
另外static關鍵字,具有作用域限定的作用,將static修飾的變量限定在聲明的當前文件中。外部文件無法訪問。
extern:用於聲明外部定義的變量和函數
也就是說extern告訴編譯器該變量或者函數,在其他文件進行了定義分配了空間,你儘管用就行了。
當然extern也用於指定編譯器按照C語言標準進行程序編譯。