C語言部分關鍵字

2022-06-23 23:27:07 字數 1979 閱讀 9669

void 、 char 、 int、float、 double、 short、long、signed、unsigned、struct、union、 

enum 、 typedef、sizeof、auto、static、register、extern 、const、volatile、return

continue、break、goto、if、else、switch、case、default、for、do、while

union:共用體

結構體和共用體的區別在於:結構體的各個成員會佔用不同的記憶體,互相之間沒有影響;而共用體的所有成員佔用同一段記憶體,修改一個成員會影響其餘所有成員。

//

方式1 先定義共用體,再建立變數,

union data;

union data a,b,c;

//方式2 也可以在定義共用體的同時建立變數

union dataa,b,c;

//方式3不再定義新的變數,也可以將共用體的名字省略

union a, b, c;

enum :申明列舉

//

關鍵字+列舉型別的名字

enum

typename;//

舉例enum week;

//也可以在定義列舉型別的同時定義變數:

enum week a, b, c;

typedef與define是給物件起另外的名字,主要為了簡化程式和增強可讀性

typedef:申明型別名稱,在編譯時處理,有型別檢查功能。它在自己的作用域內給一個已經存在的型別一個別名,但不能在一個函式定義裡面使用typedef。

如:typedef int (pfun)(int,int)        加上typedef會由函式指標變數變為函式指標型別。

#define不只是可以為型別取別名,還可以定義常量、變數、編譯開關等

define:是預處理指令,也稱作巨集定義,在預處理時進行簡單而機械的字串替換,不作正確性檢查,沒有作用域的限制,

#define     intptr1     int*typedef     

int* intptr2;

典型錯誤用法

//

帶分號#definen 100;//

定義指標型別

#define pin (int*)pin a,b;

int*a,b;

/*本意是a和b都是int型指標,但是實際上變成int* a,b;a是int型指標,而b是int型變數。這是應該使用typedef來代替define,這樣a和b就都是int型指標了。

*/

static與const

static:

1、修飾區域性變數--存放在靜態儲存區,生命週期是整個程式結束。

2、修飾函式和全域性變數--限制該全域性變數或者函式的作用域僅限於本檔案

特點:a、記憶性:在第二次呼叫進入時, 能保持第一次呼叫退出時的值.,造成不同時刻至執行的結果可能不同.

b、生存期:全域性性和唯一性,每次呼叫時,都指向同一塊記憶體,這就造成一個很重要的問題,不可重入性。

優點:不用擔心自己定義的函式,是否會與其它檔案中的函式同名。

const:定義常量,常量的值不能改變

優點:1、可以保護被修飾的東西,防止意外修改,增強程式的健壯性 

const

int n=5

;等同於

intconst n=5;

//

常量指標是指標指向的內容是常量,可以有一下兩種定義方式

const

int *n;

intconst *n;

//指標常量是指指標本身是個常量,不能在指向其他的地址

int *const n;

volatile:精確地說就是,遇到這個關鍵字宣告的變數,編譯器對訪問該變數的**就不再進行優化,從而可以提供對特殊地址的穩定訪問;