语法解释

时间:2010-04-29 19:13:04

标签: c++

在代码中:

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

我的意思是我使用tagPaint类型的名称Paint和使用pPaint的指针将变量声明为tagPaint吗? 感谢。

6 个答案:

答案 0 :(得分:5)

您可以在该类型变量的声明中声明并定义structclass

因此,该声明定义了三个符号:tagPaint(在C风格中也称为struct tagPaint),PainttagPaint,{{1 }}指向pPaint

答案 1 :(得分:2)

Paint是tagPaint类型的变量。 pPaint是指向tagPaint类型的指针。如果您希望它们定义类型,那么您需要:

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

但这是C用法 - 你不应该在C ++中编写类似的代码。甚至在C中,定义一个隐藏事物是指针的类型被认为是坏的风格。

答案 2 :(得分:1)

是的,在您实际发布的代码中Paint被声明为struct tagPaintpPaint是指向struct tagPaint的指针。

您确定在typedef之前没有错过struct吗?鉴于名称,定义typedef s会更常见。

答案 3 :(得分:1)

Paintstruct tagPaint的实例,pPaint是指向struct tagPaint的指针。

结构需要前面的typedef关键字才能将Paint用作类型,pPaint作为指向Paint的指针。

答案 4 :(得分:0)

你宣布他们两个:)

答案 5 :(得分:0)

你宣布他们两个。您可以用相同的方式声明基元:

int a, b, c, d;

但是你不是使用int类型来声明tagPaint的实例以及指向tagPaint的指针。