声明结构的差异

ant*_*009 2 c struct

我正在使用这样的结构.我不喜欢typedef,因为我告诉它可以隐藏错误.但是,我正在查看一些示例代码,我看到这样的结构声明了.这是我宣布它们的正常方式.

struct person
{
     int age;
     char name[32];
};
Run Code Online (Sandbox Code Playgroud)

像这样使用:

    struct person person_a;
    person_a.age = 20;
    etc.
Run Code Online (Sandbox Code Playgroud)

但是,我看到结构声明如下:

struct 
{
     int age;
     char name[32];
}person;
Run Code Online (Sandbox Code Playgroud)

struct _person
{
     int age;
     char name[32];
}person;
Run Code Online (Sandbox Code Playgroud)

所有这些不同技术之间的区别是什么,以及您如何决定何时使用每个特定技术.

非常感谢任何建议,

Chr*_*utz 17

这个:

struct 
{
    int age;
    char name[32];
}person;
Run Code Online (Sandbox Code Playgroud)

声明一个变量,person这是一个struct.在struct还没有名字,但你仍然使用person变量的方式相同.

struct _person
{
    int age;
    char name[32];
}person;
Run Code Online (Sandbox Code Playgroud)

这与以下内容相同:

struct _person
{
    int age;
    char name[32];
};
struct _person person;
Run Code Online (Sandbox Code Playgroud)

它声明了一个structnamed _person,然后生成一个名为persontype 的变量struct _person.