2015-01-15 121 views
1

意義是什麼區別:什麼是「類型定義」的結構

typedef struct 
{ 

} hello; 

和:

struct hello 
{ 

}; 

很抱歉,如果這是一個愚蠢的問題,但我不明白有什麼區別。 ..

+2

有了第一個,你可以做'你好TMP;'但與第二,你必須做'結構你好TMP;' – Cornstalks

回答

3

typedef是一個關鍵字,意思是「類型定義」。它不是結構的一部分。在你的第一個例子中,它使得hello成爲一個新類型,它是struct { ... }

第一個創建一個類型;第二個聲明一個名爲hello的結構。

區別在於第一個創建了一個新類型。第二個只聲明一個結構。所不同的是微妙的,但在C,你不能重複使用而struct關鍵字結構(在C++中,範圍規則是不同的。)

要使用的類型,寫這樣的事:

typedef struct { 
     int x, y; 
} hello; 

hello a, b, c; 

這會創建所有類型hello的三個變量。

要使用結構,這樣寫:

struct xyz { 
     int z; 
}; 

struct xyz d, e, f; 
+3

第二個呢不創建一個變量;它會創建一個名爲'struct hello'的類型。 – jwodder

+0

@jwodder:你是對的。也許它被編輯了。我會編輯我的答案。 – wallyk

+0

最後,我的編輯沒有在以太網中迷路。 – wallyk

相關問題