c語言作用關鍵字**:static const typedef extern register volatile
static:
1.修飾區域性變數時(在函式體內):乙個被宣告為靜態的變數在函式過程中值保持不變,使得宣告週期延長至程式結束,此時的變數存放區域為資料段上。(從而可以少使用全域性變數)
2.修飾全域性變數:使得全域性變數的作用域在本檔案中,不能被其他檔案使用
3.修飾函式:使得函式的作用域只在本檔案中。(由於在大型專案中,可能有相同的函式名,在函式加上static可以防止函式重名帶來不必要的麻煩。如linux核心的函式都是static修飾的)
const:修飾乙個變數讓其成為唯讀變數。但是不會使其位址成為唯讀資料。
const使用判斷用就近原則。
其好處:在函式傳參時,修飾函式形參,防止實參在函式呼叫時被意外修改。
**typedef:**給型別重新命名,其中特例就是給函式指標重新命名
typedef int (*p_func)(int, int)
使用它可以增加**的可移植性,可讀性,開發效率提高,以及增加**的安全性;
1.移植性:在某些機器上,對於預設定義符號的某種型別,有些機器上預設為有符號,有些機器預設無符號數,當我們**移植到另外不同機器執行時候,如果使用typedef 給資料型別重新命名,只需要直接修改重新命名的型別為有/無符號即可。
2可讀性:我們可以把一些我們長度,姓名之類的重器名字這樣增加了**的可讀性,讓別人知道使用變數時候更加明白開發人員的意圖,如strlen函式原型返回值就是乙個size_t的型別,告訴別人返回的是乙個長度型別
3開發效率:對結構體重起名
4**安全性:**洩露時候,別人不得而知你的型別是什麼,從而增加了安全性。
extern:做外部宣告。
用extern修飾的都是宣告語句。使用宣告是一種良好的編碼規範。可以優化編譯速度
1.宣告全域性變數
2.宣告函式
rigister
修飾變數,將乙個變數盡可能的儲存在暫存器裡,減少cpu從記憶體中抓取資料的時間,從而提高**執行效率。
注意事項:
1.用rigister修飾的變數不可使用取位址符號。(&取的是記憶體中的位址)
2.不可修飾全域性變數,函式。只能修飾區域性變數
3.修飾cpu可接受的型別(有些cpu不接受浮點型運算)
volatitle:防止編譯器做預設優化
乙個定義為volatile的變數是說這個變數可能會意想不到的被改變,這樣,編譯就不會假設個變數的值。(編譯器優化:乙個值多次操作都不改變,編譯會進行優化,讓其放入cou暫存器中)
用例:1.並行裝置的硬體暫存器(如狀態暫存器)
2.乙個終端服務子程式中會訪問到的非自動變數
3.多執行緒應用被幾個任務共享的變數。
c語言中有些關鍵字還可以一起使用但是rigister跟static不可以
const與volatile(如唯讀狀態暫存器)
等~~~~~
C語言關鍵字
c語言關鍵字 在檔案範圍的教訓和關鍵字,你知道靜態變數保持他們的價值觀,甚至不在他們超出範圍的破壞。比如說呢。int generateid int main this program prints 01 2 請注意,s nid一直保持它的價值的跨多個函式呼叫。static關鍵字有另一種意思當應用到全...
C語言關鍵字
關鍵字就是已被c語言本身使用,不能作其它用途使用的字。例如關鍵字不能用作變數名 函式名等 由ansi標準定義的c語言關鍵字共32個 auto double int struct break else long switch case enum register typedef char extern...
c語言關鍵字
c 語言標準定義的32 個關鍵字 1 auto 宣告自動變數,預設時編譯器一般預設為auto int 宣告整型變數 double 宣告雙精度變數 雙精度浮點型 long 宣告長整型變數 char 宣告字元型變數 float 宣告浮點型變數 單精度浮點型 6.1 float的有效位通常有 位,指的是小...