您可以通过这种方式定义 Point 结构:
typedef struct
{
int x, y;
} Point;
也以这种方式:
typedef struct Point
{
int x, y;
};
有什么区别?
第二个例子,typedef
语句没有效果。编译器可能会忽略它或给你一个警告。
与此代码有什么不同:
typedef struct Point
{
int x, y;
} Point;
这允许您将 Point 用作类型或结构。我认为将结构名称用作类型甚至变量是一种不好的做法,但是您可以这样做。
考虑C
下面给出的代码,
typedef struct
{
int x, y;
} Point;
int main()
{
Point a;
a.x=111;
a.y=222;
printf("\n%d %d\n",a.x,a.y);
}
上面的代码将在没有任何错误或警告的情况下执行,而下面的C
代码会给你一个错误(error: 'Point' undeclared
)和一个警告(warning: useless storage class specifier in empty declaration
)。
typedef struct Point
{
int x, y;
};
int main()
{
Point a;
a.x=111;
a.y=222;
printf("\n%d %d\n",a.x,a.y);
}
要纠正错误,您已a
按如下方式声明结构变量,
int main()
{
struct Point a;
a.x=111;
a.y=222;
printf("\n%d %d\n",a.x,a.y);
}