c語言中typeof關鍵字,是c語言中的乙個新擴充套件。typeof的引數可以是兩種形式:表示式或型別。
下面這兩個等效宣告,用於宣告int類的變數a
typeof
(int
) a;
typeof
('b'
) a;
//相當於獲取'b'的型別,定義乙個變數a
// gcc中這個表示式的型別是int(自動提公升為int),
// 注意typeof(char)和typeof('b')得到的不是一樣的,這個用sizeof可以看出來
下面用於宣告指標和陣列
typeof
(int
*) p1,p2;
// 等價於
int*p1,
*p2;
typeof
(p1) p2 //p1與p2的型別一致
typeof
(int[10
]) a1,a2;
int a1[10]
,a2[10]
;typeof
(typeof
(char*)
[4]) y;
// 這與下面的定義等價:
char
*y[4];
// 注意
typeof
(int
*) p1,p2;
// 定義兩個指標p1和p2
int*p1,
*p2;
typeof
(int
)*p3,p4;
// 定義指標變數p3和int型別的變數p4
int*p3, p4;
如果將typeof用於表示式,則該表示式不會執行,只會得到表示式的型別,以下示例宣告了int型別的var變數,因為表示式foo()是int型別的,由於表示式不會被執行,所以不用呼叫foo()函式
extern
intfoo()
;typeof
(foo()
) var;
//相當於等同去int var;
一般情況下用typeof就可以了,但是如果要於iso c相容的話,最好是用雙下劃線的形式:typeof。
typeof
和typedef
很像,事實上,只要能用typedef
的地方就可以用typeof
。
typeof構造中的型別名:
例如,下列**是無效的.因為它在typeof構造中宣告了extern;
typeof
(extern
int) a;
extern
typeof
(int
) b;
typeof
(char
*const
) p;
//常指標,不能修改指標指向;
typeof構造的主要應用是用在巨集定義中。可以使用typeof關鍵字來引用巨集引數的型別。
#define pointer(t) typeof(t *)
#define array(t,n) typeof(t [n])
array (
pointer
(char),
4) y;
// 下面是乙個交換兩個變數的值的巨集定義:
#define swap(a,b)
// 這個巨集可以交換所有基本資料型別的變數(整數,字元,結構等)
c語言中typeof關鍵字
c語言中的typeof關鍵字
c語言中typeof關鍵字
c語言中typeof關鍵字 下面這兩個等效宣告,用於宣告int類弄的變數a typeof int a typeof b a 相當於獲取 b 的型別,定義乙個變數a 下面用於宣告指標和陣列 typeof int p1,p2 typeof p1 p2 p1與p2的型別一致 int p1,p2 typeo...
C語言中的typeof關鍵字
typeof關鍵字是c語言中的乙個新擴充套件。typeof的引數可以是兩種形式 表示式或型別。下面是使用表示式的的例子 typeof x 0 1 這裡假設x是乙個函式指標陣列,這樣就可以得到這個函式返回值的型別了。如果將typeof用於表示式,則該表示式不會執行。只會得到該表示式的型別。以下示例宣告...
C語言中的typeof關鍵字
typeof關鍵字是c語言中的乙個新擴充套件。typeof的引數可以是兩種形式 表示式或型別。下面是使用表示式的的例子 typeof x 0 1 這裡假設x是乙個函式指標陣列,這樣就可以得到這個函式返回值的型別了。如果將typeof用於表示式,則該表示式不會執行。只會得到該表示式的型別。以下示例宣告...