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*typedefint* 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、可以保護被修飾的東西,防止意外修改,增強程式的健壯性
constint n=5
;等同於
intconst n=5;
//常量指標是指標指向的內容是常量,可以有一下兩種定義方式
const
int *n;
intconst *n;
//指標常量是指指標本身是個常量,不能在指向其他的位址
int *const n;
volatile:精確地說就是,遇到這個關鍵字宣告的變數,編譯器對訪問該變數的**就不再進行優化,從而可以提供對特殊位址的穩定訪問;
C語言部分關鍵字
1.static 修飾區域性變數 只在初次執行時,進行初始化工作 全域性變數 只是本.c檔案可見 函式 類似於全域性變數 2.extern 編譯器並不匹配extern的函式的引數列表,只做函式名匹配!3.typedef 重定義過的資料型別,對於typedef char newc newc a,b 這...
c語言部分關鍵字簡析
一 sizeof c語言中判斷資料型別或者表示式長度符。用法有 sizeof type name sizeof object sizeof object int i sizeof int sizeof i sizeof i sizeof與strlen strlen計算不包含 0 null 的字串長度...
部分關鍵字
final 修飾類,則類不允許被繼承 修飾變數,則變數為常量,不允許被再次賦值 修飾方法,則方法不允許被重寫 修飾屬性,則類的屬性不會進行隱式的初始化,也就是類的初始化屬性必須有值,或者要在構造方法中賦值,但只能選其一。super 在子類使用,可代表父類物件,如在子類student中有方法 publ...