c語言關鍵字

2021-09-23 02:03:47 字數 1561 閱讀 1558

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的有效位通常有 位,指的是小...