2010-04-29 91 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的一个实例。