1. 程式人生 > >C語言之型別修飾符

C語言之型別修飾符

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:

告知編譯器編譯方法的關鍵字,不優化編譯

修飾變數的值的修改,不僅可以通過軟體,也可以通過其他方式(硬體外部的使用者)。