1. 程式人生 > >C語言筆記 第五課 變數屬性

C語言筆記 第五課 變數屬性

第五課 變數屬性

C語言的變數屬性

C語言中的變數可以有自己的屬性
在定義變數的時候可以加上“屬性”關鍵字
“屬性”關鍵字指明變數的特有意義
語法:property type var_name;
例項:int main()
{
auto char i;
register int j;
static long k;
extern double m;

return 0;
}

auto關鍵字

auto即C語言中區域性變數的預設屬性
auto表明將被修飾的變數儲存於棧上
編譯器預設所有的區域性變數都是auto的
示例:void f()
{
int i; //區域性變數預設屬性為auto
auto int i; //顯示宣告auto屬性
}

register關鍵字

register關鍵字指明將區域性變數儲存於暫存器中
register只能請求暫存器變數,但不一定請求成功
register變數必須是CPU暫存器可以接受的值
不能用&運算子獲取register變數的地址
#include <stdio.h>
register int g_v; //error
int main()
{
register char var;
printf(“0x%08X”, &var); //error
return 0;
}

static關鍵字

static關鍵字指明變數的“靜態”屬性
static修飾的區域性變數儲存在程式靜態區
static關鍵同時具有“作用域限定符”的意義
static修飾的全域性變數作用域只是宣告的檔案中
static修飾的函式作用域只是宣告的檔案中
#include <stdio.h>
int g_v; //全域性變數,程式的的任意地方均能訪問
register int g_v; //靜態全域性變數,只能當前檔案中可訪問
int main()
{
int var; //區域性變數,在棧上分配空間
register int svar; //靜態區域性變數,在靜態資料區分配空間
return 0;
}
5-1 auto,register,static對比分析

extern關鍵字

extern用於宣告“外部”定義的變數和函式
extern變數在檔案的其他地方分配空間
extern函式在檔案的其他地方定義
extern用於“告訴”編譯器用C方式編譯
C++編譯器和一些變種C編譯器預設會按“自己”的方式編譯函式和變數,通過extern關鍵字可以命令編譯器“以標準C方式進行編譯”。
extern “C”
{
int f(int a ,int b)
{
return a+b;
}
}
5-2 static 和extern另外的程式設計方式
小結:
auto變數儲存在程式的棧中,預設屬性
static變數儲存在程式靜態區中
register變數請求儲存於 CPU暫存器中
extern變數在檔案的其他地方分配空間
extern能夠指示編譯器按照標準C方式編譯程式