在代码中:
struct tagPaint
{
}Paint,//<<<--------------what's this (Paint)?
*pPaint;//<<<-------------and this(*pPaint)?
我的意思是我使用tagPaint类型的名称Paint和使用pPaint的指针将变量声明为tagPaint吗? 感谢。
答案 0 :(得分:5)
您可以在该类型变量的声明中声明并定义struct
或class
。
因此,该声明定义了三个符号:tagPaint
(在C风格中也称为struct tagPaint
),Paint
是tagPaint
,{{1 }}指向pPaint
。
答案 1 :(得分:2)
Paint是tagPaint类型的变量。 pPaint是指向tagPaint类型的指针。如果您希望它们定义类型,那么您需要:
typedef struct tagPaint {
...
} Paint, * pPaint;
但这是C用法 - 你不应该在C ++中编写类似的代码。甚至在C中,定义一个隐藏事物是指针的类型被认为是坏的风格。
答案 2 :(得分:1)
是的,在您实际发布的代码中Paint
被声明为struct tagPaint
而pPaint
是指向struct tagPaint
的指针。
您确定在typedef
之前没有错过struct
吗?鉴于名称,定义typedef
s会更常见。
答案 3 :(得分:1)
Paint
是struct tagPaint
的实例,pPaint
是指向struct tagPaint
的指针。
结构需要前面的typedef
关键字才能将Paint
用作类型,pPaint
作为指向Paint
的指针。
答案 4 :(得分:0)
你宣布他们两个:)
答案 5 :(得分:0)
你宣布他们两个。您可以用相同的方式声明基元:
int a, b, c, d;
但是你不是使用int类型来声明tagPaint的实例以及指向tagPaint的指针。