C語言學習筆記 typede用法

2021-09-02 19:33:21 字數 1260 閱讀 1056

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