1、register關鍵字
請求編譯器盡可能的將變數儲存在cpu
內部暫存器中,省去
cpu從記憶體中抓取變數的時間,提高了執行效率。
為什麼是盡可能而不是全部將變數儲存在cpu中:由於
cpu內部暫存器中空間有限,不可能將所有變數都放入其中,所以只能將一些經常訪問的變數放入。
使用注意事項:①
register
只能修飾區域性變數,不能修飾全域性變數和函式。全域性變數會被多個程序訪問,如果只有當前程序用
register
修飾,那麼只有當前程序知道被
register
修飾的變數儲存在**。
②不能用取位址來獲取變數的位址,因為這個變數是儲存在暫存器中的,取位址獲取的是記憶體的位址 ③
register
修飾的變數一定是
cpu可以接受的變數
2、static關鍵字
staticke可以修飾變數和函式,⑴
static
在修飾變數時,既可以修飾區域性變數又可以修飾全域性變數
①在修飾區域性變數時是在延長他的生命週期,在程式整體執行結束時在釋放
②在修飾全域性變數時,該變數只能在本檔案中被訪問,其他檔案中不可以訪問 ⑵
static
修飾的函式與全域性變數類似,只能在本檔案中被呼叫,其他檔案不可以呼叫。
static
修飾的變數儲存在資料區的靜態資料區,若沒有
進行初始化,則初始化預設為
0什麼時候用static關鍵字:當你想要將乙個變數在程式執行完成後釋放,可以使用static
修飾,用全域性變數就比較危險,因為其它函式也可以進行操作,而用
static
修飾的變
量只有該函式自己可以操作,起到保護的作用
3、const關鍵字
const修飾的是唯讀變數,不可以通過該變數名來修改裡面的內容,但是可以通過該空間修改裡面的內容。因此可以總結出一句話:
const
離誰近,誰不可以做改變。使 用
const
修飾變數時,一定要對變數進行初始化。且
const
一般用在修飾函式形參,避免在函式執行過程中修改實參的值。
例:const int num = 5
;int *p = #
(*p)
++;
//正確
num++;
//錯誤表達,因為
const
離num
近,所以不可以做改變
4、extern關鍵字
這是乙個申明變數,申明這個變數時在其他檔案定義的,但是要加申明的型別,而且,extern
只能申明全域性變數,在函式內部的區域性變數不可訪問
5、typedef關鍵字
給變數重起名字,提高**的移植性,可以使複雜的變數名變成簡單的變數名,提高編寫效率,起到對變數的注釋的作用
6、volatile關鍵字
volatile提醒編譯器它後面所定義的變數隨時都有可能改變,因此編譯後的程式每次需要儲存或讀取這個變數的時候,都會直接從變數位址中讀取資料。如果沒有
volatile關
鍵字,則編譯器可能優化讀取和儲存,可能暫時使用暫存器中的值,如果這個變數由別的程式更新了的話,將出現不一致的現象。
一般說來,volatile
用在如下的幾個地方:
①中斷服務程式中修改的供其它程式檢測的變數需要加
volatile ②
多工環境下各任務間共享的標誌應該加
volatile ③
儲存器對映的硬體暫存器通常也要加
volatile
說明,因為每次對它的讀寫都可能由不同意義
另外,以上這幾種情況經常還要同時考慮資料的完整性(相互關聯的幾個標誌讀了一半被打斷了重寫),在
1中可以通過關中斷來實現,
2中可以禁止任務排程,
3中則只能
依靠硬體的良好設計了。
注:還有其他一些關鍵字後續會補充
關鍵字的用法 C 中const關鍵字用法總結
ark2000 看完了c primer的基礎篇,對const還是有點陌生,在這裡小小地總結一下吧。在變數的定義前加上const修飾符即可完成const物件的建立。const int val 5 const變數的值不能改變。val 5 error assignment of read only var...
在C 中global關鍵字的作用及其用法
global 是 c 2.0 中新增的關鍵字,理論上說,如果 寫得好的話,根本不需要用到它。假設你現在寫了乙個類,名字叫 system。那麼當你再在 裡寫 system 的時候,編譯器就不知道你是要指你寫的 system 類還程式設計客棧是系統的 system 命名空間,而 system 命名空間已...
this關鍵字的3種用法
一 this.屬性名 當乙個類的屬性 成員變數 名與訪問該屬性的方法引數名相同時,則需要使用 this 關鍵字來訪問類中的屬性,以區分類的屬性和方法中的引數。二 this.方法名 某個方法呼叫同一類中別的方法,不需要再建立物件,直接用this。public class dog run方法 publi...