C語言之型別修飾符
阿新 • • 發佈:2018-12-15
auto 預設修飾符
register:
register int a; //限制變數定義在暫存器上的修飾符
- 用於定義一些快速訪問的變數
- 編譯器會盡量的安排CPU的暫存器去存放這個a,如果暫存器不足時,a還是放在儲存器中
- 取地址符&對register不起作用
記憶體(儲存器); 暫存器
暫存器在cpu中,資料儲存其中訪問速度很快
資料放在暫存器(記憶體)中,訪問速度相對很慢
static:
應用場景:
(1)不想被釋放的時候,可以使用static修飾。比如修飾函式中存放在棧空間的陣列。如果不想讓這個陣列在函式呼叫結束釋放可以使用static修飾 。 (2)考慮到資料安全性(當程想要使用全域性變數的時候應該先考慮使用static)。
修飾三種資料:
1.函式內部的變數(區域性變數):static修飾的靜態區域性變數只執行一次,而且延長了區域性變數的生命週期,直到程式執行結束以後才釋放。
2.函式外部的變數(全域性變數): 這個全域性變數只能在本檔案中訪問,不能在其它檔案中訪問,即便是extern外部宣告也不可以。
int a ===>static int a
int fun(){}
3.函式的修飾符:C語言中,不加static修飾的函式對所有的原始檔都是可見的;加static修飾符,則這個函式的只能在本檔案中呼叫,不能被其他檔案呼叫。Static修飾的區域性變數存放在全域性資料區的靜態變數區。初始化的時候自動初始化為0;
int fun()===>static int fun()
const:
C: 只讀,建議性,不具備強制性 !=常量;
C++: 常量。
extern:
extern用在變數或函式的宣告前,用來說明“此變數/函式是在別處定義的,要在此處引用”。
volatile:
告知編譯器編譯方法的關鍵字,不優化編譯
修飾變數的值的修改,不僅可以通過軟體,也可以通過其他方式(硬體外部的使用者)。