在c語言中變數大致分為四種型別它們分別:
1 auto 自動變數
2 register 暫存器變數
3 static 靜態變數
4 extern 外部變數
一般形式:
儲存型別說明符 資料型別說明符 變數名,變數名…
static
int i,j;
auto
char c,d;
static
int a=1;
extern
int x,y;
auto自動變數:
平時我們寫變數是都是直接定義變數的如:
int i=1;
/* 這就是乙個自動變數它等價於:*/
auto
int i=
1;
當定義了乙個自動變數後,它的作用域就是定義它的塊之間
超出這個塊就無法使用它
register暫存器變數:
當乙個變數需要頻繁讀寫時,可以把這個變數設定為暫存器變數。與普通變數相比較暫存器變數的讀寫速度更快,在一定程度上優化程式提高程式的執行速度,它也與自動變數一樣,暫存器變數也是塊作用域、無連線、自動儲存期。但暫存器變數是存放在暫存器中而不是記憶體中因此它無法進行取位址操作,同時變數不是加上了register就會變成暫存器變數,加上register只是一種請求,編譯器會考慮是否把變數轉為暫存器變數,如果編譯器忽略請求則變數會變成普通的自動變數。
對於迴圈次數多的迴圈控制變數可定義為暫存器變數。
#include
intmain()
return0;
}
static 靜態變數
靜態區域性變數使用static修飾符定義,即使在宣告時未賦初值,編譯器也會把它初始化為0。且靜態區域性變數儲存於程序的全域性資料區,即使函式返回,它的值也會保持不變。靜態變數在賦值時只會進行一次,靜態變數可以實現資料的本地化,如變數i。
注意:1、只有區域性自動變數和形式引數才可以定義為暫存器變數。
2、根據機器不同,cpu中暫存器的個數是有限制的。
#include
//static int i;
voidfn(
void
)void
fn_static
(void
)int
main
(void
)int a=10;
//全域性變數a
void
fun1()
//全域性變數a可以被fun1()呼叫;
變數的屬性和含義還有許多在這裡無法一一細講,以後會對其進行單獨的講解,有興趣的小夥伴可以走一波關注。 C語言 變數儲存型別
c語言中,變數儲存型別指的是儲存變數的記憶體的型別,主要分為三種 普通記憶體 執行時堆疊 硬體暫存器。變數儲存在那種型別的記憶體中和變數的作用域有很大的關係。首先,分析一下變數的作用域。作用域與宣告的位置有關。在乙個原始檔中,變數宣告的位置有兩種 在 塊內和 塊外。塊指的是被花括號 包圍的一段 1 ...
C語言的變數儲存型別
c語言中對變數的說明包括兩方面的內容 變數型別以及變數的儲存型別。變數型別如 int 整形 char 字元型 是用來說明變數所占用的記憶體空間的大小。變數儲存型別用來說明變數的作用範圍。c語言的變數儲存型別有 自動類 暫存器類 靜態類和外部類。區域性變數是指在函式內部說明的變數 有時也稱為自動變數 ...
c語言 變數儲存型別 extern
extern表示是外部函式或外部變數函式在使用外部變數之前,必須要知道外部變數的名字。需要在使用的外部變數前加extern。在原始檔中,外部變數在函式之前,可以省略extern關鍵字。如果程式包含在多個原始檔中,而某個變數在file1檔案中定義 在file2和file3檔案中使用,那麼在檔案file...