c語言提供了乙個 型別定義 的功能 typedef 用此來建立新的資料型別名。
需要強調的是,從任何意義上來講,typedef 的宣告並沒有建立乙個新的型別,它只是為某個已經存在的型別增加乙個新的名稱而已。
typedef 宣告也沒有增加任何新的語義,通過這種方式宣告的變數與通過普通方式宣告的變數具有完全相同的屬性。
typedef 類似與#define 語句,但是typedef是由編譯器解釋的,因此它的文字替換功能要超過預處理器的能力。
typedef 型別名 新的名稱 ;(注意分號)
typedef
的本質就相當於起「外號」,注意!這裡替換的是型別,是型別。
那麼面對比較複雜的型別定義時,如何準確判斷他定義的何種型別呢?
typedef 型別名 新的名稱 ;
怎麼樣現在是不是一目了然了?
eg1.typrdef int length;
將length 定義為與int具有同等意義的名字。
在這裡int
就相當於是「官名」,而
length
則就是你給他起了個
「外號」。
然後我們可以用length 來宣告一些變數:
length len,maxlen;等同於 int len,maxlen;
eg2.typedef char *string;
我第一次看認為是將 char定義為「*string」,最後感覺不太對勁,查閱資料才知道
正確答案是:將string 定義為 字元指標(char *)
eg3. typedef int (*myfun )(int , int);
這種用法一般用在給函式定義別名的時候
上例定義了myfun 是乙個 函式指標,函式型別是帶有兩個int型引數,返回乙個int 型
在分析這種形式的時候,可以用如下方法:
先去掉 typedef 和別名,剩下的就是原變數的型別。
去掉typedef 和myfun以後就剩: int (*)(int ,int)
eg4.不得不說typedef 和struct是一對好**啊
typedef struct my_type;
這裡把乙個未命名的結構直接取了乙個叫 my_type 的別名,
如果你需要定義該結構體的例項: my_type tmp;
eg5.來段《the c programming language》中的**
typedefstruct tnode *treeptr;
typedefstruct tnodetreenode;
以上定義建立兩個新型關鍵字:treenode(乙個結構體)和
terrptr(乙個指向該結構體的指標)
treeptr talloc (void)
//嘗試自己理解下這段**
(C語言)typedef關鍵字
typedef 定義 c 語言提供了typedef關鍵字,您可以使用它來為型別取乙個新的名字。下面的例項為單位元組數字定義了乙個術語byte typedef unsigned char byte 在這個型別定義之後,識別符號 byte 可作為型別unsigned char的縮寫,例如 byte b1...
C語言之關鍵字
基本資料型別 short int long float double char unsigned signed 8個 復合資料型別 struct union enum 3個 語句結構 if esle do while for switch case default break continue go...
C語言的 typedef 關鍵字
typedef 是 c 語言的關鍵字,用於宣告基本資料型別的別名 如 typedef int a 則宣告了乙個 int 型別的別名 a,這個 a 不再是乙個變數,而是 int 的別名,可以用 a 來代替 int 來宣告其他整形變數,如 a name 就是宣告了乙個整形變數 name 型別別名和型別名...