除了可以直接使用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...