C C 學習筆記25 用typedef定義型別

2021-06-23 07:58:06 字數 1516 閱讀 3157

除了可以直接使用c提供的標準型別名和自己宣告的結構體、共用體、指標等型別外,還可以用typedef宣告新的型別名來代替已有的型別名。我們還是從乙個面試題來分析typedef的用法:

寫出下面**的輸出內容:

#include int inc(int a)   

int multi(int*a,int*b,int*c)   

typedef int(func1)(int in);   

typedef int(func2) (int*,int*,int*);

void show(func2 fun,int arg1, int*arg2)  

main()   

我們先不對例題進行分析,我們先來說明下具體的使用:

typedef struct

date;

宣告了乙個新的型別名date,它代表上面指定的乙個結構體型別。這時就可以用date來定義變數:

date birthday;

date *p;

可以不可以更複雜一點呢?

(1)

typedef int num[100]; //宣告num為整型陣列型別

num n; //定義n為整型陣列變數

(2)
typedef  char *string; //宣告string為字元指標型別

string p,s[10]; //p為字元指標變數,s為指標陣列

(3)

typedef int (*pointer)();//宣告pointer為指向函式的指標型別,該函式返回整型值

pointer p1,p2; //p1,p2為pointer型別的指標變數

問題一:typedef與#define有什麼區別?

#define是在預編譯時處理的,它只能做簡單的字串替換,而typedef是在編譯時處理的。實際上並不是做簡單的字串替換。而是用「型別宣告乙個型別」,就是採用定義變數的方法那樣來宣告乙個型別。

利用上面的所有知識來分析開頭的源**:

#include int inc(int a)   

int multi(int*a,int*b,int*c)   

typedef int(func1)(int in);   //宣告func1為乙個函式型別

typedef int(func2) (int*,int*,int*);  //宣告func2為乙個函式型別

void show(func2 fun,int arg1, int*arg2) // 傳遞函式的時候,把multi傳遞給了fun 

main()   

所以結果是:110

C語言學習筆記 typede用法

typedef 關鍵字 自定義資料型別名稱,來替代系統預設的基本型別名稱 陣列型別名稱 指標型別名稱與使用者自定義的結構型名稱 共用型名稱 列舉型名稱等。1 為基本資料型別定義新的型別名 也就是說,系統預設的所有基本型別都可以利用 typedef 關鍵字來重新定義型別名,示例 如下所示 typede...

C C學習筆記

1.儲存型別 標準c語言為變數 常量 函式定義了4種儲存型別 extern,auto,static,register,它們分別用乙個關鍵字 儲存型別說明符 來說明。這4種儲存型別可分為兩種生存期限 永久的 即整個程式執行期間都存在 extern和static 和臨時的 即暫時儲存在堆疊和暫存器中 a...

C,C 學習筆記

1.求a的n次方 標頭檔案pow a,n a,n都為double 2.關於指標的一些小測試 includeusing namespace std int main int a 8 int m 3 cout 3.sort位於 algorithm 中,sort p,p n 預設公升序排列。4.inclu...