(七十四)型別別名 別名的建立

2021-09-23 23:31:39 字數 1480 閱讀 8053

例如:

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