C語言中幾個關鍵字的作用

C語言中關鍵字一共有32個,比如:int,char,const等等,這裏,我挑選以下幾個來解釋一下他們的作用:

1.static:

(1)隱藏:當我們同時編譯多個文件時,所有未加static前綴的全局變量和函數都具有全局可見性,其它的源文件也能訪問。

(2)static的第二個作用是保持變量內容的持久。存儲在靜態數據區的變量會在程序剛開始運行時就完成初始化,也是唯一的一次初始化。共有兩種變量存儲在靜態存儲區:全局變量和static變量,只不過和全局變量比起來,static可以控制變量的可見範圍,說到底static還是用來隱藏的。

(3)static的第三個作用是默認初始化爲0。

2.extern:

利用關鍵字extern,可以在一個文件中引用另一個文件中定義的變量或者函數。

3.const:

const是constant的簡寫,只要一個變量前面用const來修飾,就意味着該變量裏的數據可以被訪問,不能被修改。也就是說const意味着“只讀。

規則:const離誰近,誰就不能被修改;const修飾一個變量,一定要給這個變量初始化值,若不初始化,後面就無法初始化。本質:const在誰後面誰就不可以修改,const在最前面則將其後移一位,二者等效。

4.register:

register修飾暗示編譯程序相應的變量將被頻繁使用的變量儘可能的將這個變量保存在CPU內部寄存器中而不是通過內存尋址來訪問,是爲了提升它的運行速率。

但是使用register修飾符有幾點限制

(1)register變量必須是能被CPU所接受的類型。

這通常意味着register變量必須是一個單個的值,並且長度應該小於或者等於整型的長度。不過,有些機器的寄存器也能存放浮點數。

 

(2)因爲register變量可能不存放在內存中,所以不能用“&”來獲取register變量的地址。

 

(3)只有局部自動變量和形式參數可以作爲寄存器變量,其它(如全局變量)不行。

在調用一個函數時佔用一些寄存器以存放寄存器變量的值,函數調用結束後釋放寄存器。此後,在調用另外一個函數時又可以利用這些寄存器來存放該函數的寄存器變量。

 

(4)局部靜態變量不能定義爲寄存器變量。不能寫成:register static int a, b, c;

 

(5)由於寄存器的數量有限(不同的cpu寄存器數目不一),不能定義任意多個寄存器變量,而且某些寄存器只能接受特定類型的數據(如指針和浮點數),因此真正起作用的register修飾符的數目和類型都依賴於運行程序的機器,而任何多餘的register修飾符都將被編譯程序所忽略。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章