0

您可以通过这种方式定义 Point 结构:

typedef struct
{
    int x, y;
} Point;

也以这种方式:

typedef struct Point
{
    int x, y;
};

有什么区别?

4

2 回答 2

1

第二个例子,typedef语句没有效果。编译器可能会忽略它或给你一个警告。

与此代码有什么不同:

typedef struct Point
{
    int x, y;
} Point;

这允许您将 Point 用作类型或结构。我认为将结构名称用作类型甚至变量是一种不好的做法,但是您可以这样做。

于 2013-05-23T19:58:59.383 回答
1

考虑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);
 }
于 2013-05-23T19:39:03.893 回答