typeof的做用

上篇博客已經說過 typeof  和  __typeof  和 __typeof 功能是同樣的,區別就是不一樣C版本下的不一樣寫法。spa

typeof 的 具體做用是什麼?

 typeof( ) 會自動推導後面 ( ) 裏的表達式 的 數據類型。 ( )裏能夠是任意類型指針

int a = 6;
typeof(int *) p = &a;  //定義一個指針型變量p  指向 a

如上代碼,typeof 推斷出後面 ( )裏面的int * 的類型,而後用這個類型int *  定義一個指針變量p。這裏好象有點傻b。  int * 一看就知道是指向int類型的指針類型,這尼瑪還須要typeof推斷嗎?  確實,這樣作有點畫蛇添足。   可是,若是咱們把剛纔的 typeof(int *) 改爲 typeof(&a),它也會自動推導出 &a 的類型 —— int * 型,這樣的話,當遇到一個很是複雜的表達式咱們很難推斷其類型的時候,typeof 就頗有用了。code

 

再看一個例子:博客

int *p = NULL;
typeof(*p) x = 9;

定義了一個指向int類型的指針變量 p,typeof 後面括號裏的表達式爲 *p,p 的類型爲 int * 型,那 *p 固然就被解析爲 int 型,因此用這個類型聲明的變量 x 也是 int 型,就至關於 int x = 9;class

相關文章
相關標籤/搜索