c中的關鍵字

2021-07-24 21:12:28 字數 1303 閱讀 4397

一、register

作用:請求編譯器盡可能的將變數存在cpu內部暫存器中,一般的變數存在記憶體中,當需要時cpu再從記憶體中把它抓取到cpu中,使用register把它存在cpu中省去了cpu從記憶體中抓取資料的時間,提高執行效率。

注意:1、盡可能,因為cpu記憶體有限,不可能全放在裡面,一般把頻繁使用的變數放在裡面,如迴圈變數。

2、register只能修飾區域性變數,不能修飾 全域性變數和函式。

3、register修飾的變數不能使用取位址符獲取位址,因為它儲存在cpu裡,不在記憶體中。

4、register修飾的變數一定是cpu接受的型別。

二、static

static既能修飾變數也能修飾函式,修飾的資料儲存在全域性資料區的靜態資料區。

作用:1、被static修飾的區域性變數,延長了生存週期,程式結束後才會釋放。

2、被static修飾的全域性變數,只能在本檔案中使用,不能在其它檔案中訪問。

3、被static修飾的函式,只能在本檔案中呼叫,不能被其它檔案呼叫。

三、extern

作用:外部宣告,呼叫在其它檔案中定義的變數。

使用形式:extern int num  宣告要加型別。

四、const

作用:修飾乙個變數變為唯讀,通常用作函式形參。

例: const num = 5;

不能再通過變數名去修改num對應空間的值,但通過其他方法還是可以修改的。

如: int *p = #

(*p)++;

例: const int *p = #

三個運算

1、num++;

2、p++;

3、(*p)++;

解:3式可以成功,1、2兩式不能成功。const向右距離*p最近,所以*p是可以修改的。

五、typedef

作用:重定義

特殊:定義函式指標

typedef int(*p_fun)(int);

p_fun p_func;

六、volatile

七、define

作用:定義巨集。

特殊:

函式式巨集定義:#define max(a,b) a > b ? a : b

巨集函式與自定義函式區別:

巨集的執行速度快,省去了分配空間和釋放棧幀、傳參、傳返回值等一系列操作,適用於簡短且被頻繁呼叫的函式,是以編譯時間換空間的典例。

#ifndef

#define

#endif

可以防止因標頭檔案相互包含帶來的重複定義。

C 中struct關鍵字和class關鍵字的區別

剛開始接觸 c 看到 中有struct關鍵字,還以為是用了結構體,結果後來發現 struct 和 class 一樣都用於類的定義,於是把兩者的差別記錄於此。一句話總結 兩者均可用於定義類,唯一的區別是兩者定義的類的預設訪問許可權有差別。其實比兩者差別更重要的是,我很好奇為什麼 c 中會存在兩個用於定...

c 中mutable關鍵字

mutalbe的中文意思是 可變的,易變的 跟constant 既c 中的const 是反義詞。在c 中,mutable也是為了突破const的限制而設定的。被mutable修飾的變數,將永遠處於可變的狀態,即使在乙個const函式中。我們知道,如果類的成員函式不會改變物件的狀態,那麼這個成員函式一...

c中static關鍵字

看別人的c 會看到很多變數或者函式前面帶有static關鍵字。c中的static和php中的static有很到的不同,在php中static表示靜態化變數,乙個類中的static成員只與類有關,而與類的例項無關。c中的static關鍵字主要用於隱藏 access control 1.隱藏 函式前的s...