C中的6種關鍵字及其用法

2021-07-15 14:42:10 字數 2028 閱讀 3099

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...