typedef 關鍵字:自定義資料型別名稱,來替代系統預設的基本型別名稱、陣列型別名稱、指標型別名稱與使用者自定義的結構型名稱、共用型名稱、列舉型名稱等。
(1)為基本資料型別定義新的型別名
也就是說,系統預設的所有基本型別都可以利用 typedef 關鍵字來重新定義型別名,示例**如下所示:
typedef unsigned int count;
而且,我們還可以使用這種方法來定義與平台無關的型別。比如,要定義乙個叫 real 的浮點型別,在目標平台一上,讓它表示最高精度的型別,即:
typedef long double real
在不支援 long double 的平台二上,改為:
typedef double real;
甚至還可以在連 double 都不支援的平台三上,改為:
typedef float real;
這樣,當跨平台移植程式時,我們只需要修改一下 typedef 的定義即可,而不用對其他源**做任何修改。
(2)為自定義資料型別(結構體、共用體和列舉型別)定義簡潔的型別名稱
typedef struct tagpoint
point;
這樣就使用 typedef 為這個新的結構起了乙個別名,叫 point。現在可以直接使用 point 定義變數:
point opoint1=;
point opoint2;
(3)為陣列定義簡潔的型別名稱
typedef char* pchar;
pchar pa;
(4)為指標定義簡潔的名稱
// pfun是我們建立的乙個型別別名
typedef int *(*pfun)(int,char*);
// 使用定義的新型別來宣告物件,等價於int*(*a[5])(int,char*);
pfun a[5];
注:typedef與#define使用區別:
1)與#define不同,typedef建立的符號只受限於型別,不能用於值;
2)tpyedef由編譯器解釋,不是預處理器
3)在其受限範圍內,tpyedef比#define更靈活
C語言學習筆記 static用法
1 修飾區域性變數 1 位置 靜態區域性變數被編譯器放在全域性儲存區靜態儲存區,所以它雖然是區域性的,但是在程式的整個生命週期中存在。2 訪問許可權 靜態區域性變數只能被其作用域內的變數或函式訪問。也就是說雖然它會在程式的整個生命週期中存在,由於它是static的,它不能被其他的函式和原始檔訪問。3...
C語言學習筆記
include include void swap int p1,int p2 void swapa int arr,int n void printfa int arr,int n int main int argc,char argv swap i,j printfa array,6 swapa...
C語言學習筆記
file 結構 包含在stdio.h裡 ifndef file defined struct iobuf typedef struct iobuf file define file defined endif fread 功 能 從乙個流中讀資料 函式原型 size t fread void buf...