C語言的typeof關鍵字

2021-10-04 19:00:58 字數 1954 閱讀 9617

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

typeoftypedef很像,事實上,只要能用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用於表示式,則該表示式不會執行。只會得到該表示式的型別。以下示例宣告...