例如:
clock_t one_start;
實質上就是建立了乙個int型別的變數one_start,雖然在變數名前面寫的是clock_t,但他實質上是int型別的別名。
建立別名的方法:
①使用預處理器:
#define 別名 原名;
如:#define
abcdouble
在編譯器進行處理的時候,將abc轉為double進行處理。
**:
#include#define abc double //將abc認為是double進行處理
int main()
輸出:
1.1
請按任意鍵繼續. . .
abc正常來說,當然不是型別名,但是在使用了預處理器之後,abc可以充當型別名,並且他實質上是double型別,於是abc a=1.1;在輸出abc的時候,值為1.1
預處理器:尚未學到,但可以猜測,#define就是預處理器。
②使用typedef,格式為:
typedef 原型名 別名;
如:typedef
double
abc;
就是將abc認為是double進行處理。
③二者的共同點:
可以用之替代很多態別,例如指標:
#define abc double*
//或 typedef doube* abc;
abc a;
在實質上,轉為double* a; 即double型別的指標a
④二者的區別:
#define在使用的時候,他替代時,若遇見多個變數被逗號運算子連在一起,不會替代所有的。例如**:
#include#define abc double*
int main()
輸出:
0035fbf023
請按任意鍵繼續. . .
我們發現,a,b,c雖然都被型別abc一同定義,但結果就a為指標,b和c只有double型別——即b和c的運算子*被忽視了。
但是typedef不存在這種問題,在同樣情況下,a,b,c三個都是指標:
**:
#includeint main()
輸出:
003cfea0
003cfe90
003cfe80
請按任意鍵繼續. . .
這個時候,a,b,c都是指標了。
即——#define只對第乙個起全部效果,typedef對所有都起全部效果。
⑤typedef和#define
按照說明,typedef並沒有創造乙個新型別,只是為已有的型別建立乙個新的名稱。
但是沒有說明#
define
是不是建立了乙個新型別。
(七十四)型別別名 別名的建立
例如 clock t one start 實質上就是建立了乙個int型別的變數one start,雖然在變數名前面寫的是clock t,但他實質上是int型別的別名。建立別名的方法 使用預處理器 define 別名 原名 如 define abcdouble 在編譯器進行處理的時候,將abc轉為do...
Go No nil 型別別名
為型別起個別名,方便 編寫過程中使用。type alias ttype 關鍵字 alias 型別別名 t 型別 例如資料型別中提到的unicode字元型rune和ascii字元型byte就是型別別名 type rune int32 type byte uint8在 go 中有一些基本的資料型別,如s...
定義型別別名 typedef,using
說到型別別名,無非是給型別名 如int,char,float,double,bool 取乙個比較有特殊含義的名字而已 最常用的關鍵莫過於typedef吧 typedef最常見的用法是與結構體struct連用,這是c語言的語法,c 已經不這樣用了 或者很少這樣用 在c語言中宣告結構體常用以下格式 1 ...