2010-04-29 94 views
0

在代碼:語法解釋

struct tagPaint 
{ 
}Paint,//<<<--------------what's this (Paint)? 
*pPaint;//<<<-------------and this(*pPaint)? 

我是說,我宣佈與類型tagPaint和指針的名字油漆變量稱爲pPaint到tagPaint?
謝謝。

回答

2

paint是一個tagPaint類型的變量。 pPaint是一個指向tagPaint類型的指針。如果你想讓他們定義類型,那麼你需要:

typedef struct tagPaint { 
    ... 
} Paint, * pPaint; 

但這是C用法 - 你不應該在C++中編寫這樣的代碼。甚至在C中,定義一種隱藏事物是指針的類型被認爲是不好的風格。

0

你聲明它們都是:)

5

您可以在聲明該類型的變量時聲明並定義structclass

所以,該聲明定義了三個符號:tagPaint(其也可以用C樣式稱爲struct tagPaintPaint其是tagPaint,和pPaint指向一個tagPaint

1

是的,在您實際發佈的代碼Paint中聲明爲struct tagPaintpPaint是指向struct tagPaint的指針。

您確定您沒有錯過struct之前的typedef嗎?鑑於名稱,定義typedef將更加平常。

+0

是的,我確實錯過了typedef。 – 2010-04-29 19:47:10

1

Paintstruct tagPaint的實例,而pPaint是指向struct tagPaint的指針。

該結構需要在其之前的typedef關鍵字才能使用Paint作爲類型,而使用pPaint作爲類型Paint的指針。

0

你正在聲明他們兩個。你可以聲明原語一樣:

int a, b, c, d; 

但不是int類型你與一個指向tagPaint沿着宣佈tagPaint的一個實例。