结构声明

foh*_*oho 3 c

我见过结构声明,看起来像这个

typedef struct br {
        int year;
        int km;

} Car;
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用那种结构

Car ford;
ford.year = 1980;
ford.km = 12
Run Code Online (Sandbox Code Playgroud)

但是对于宣言中的"br"是什么?

oua*_*uah 12

br 被称为结构标签.

创建的新类型是struct br,Car并且只是一个类型别名struct br.

这个宣言

struct br ford;
Run Code Online (Sandbox Code Playgroud)

相当于这个声明:

Car ford;   // ford is of type struct br
Run Code Online (Sandbox Code Playgroud)

还有组合形式:

typedef struct br {
    int year;
    int km;
} Car;
Run Code Online (Sandbox Code Playgroud)

相当于这些声明:

struct br {
    int year;
    int km;
};

typedef struct br Car;
Run Code Online (Sandbox Code Playgroud)


das*_*ght 5

这是一个组合声明struct和一个类型定义.Car是新定义类型的名称; br结构标签.您可以按如下方式使用它:

struct br x;
Run Code Online (Sandbox Code Playgroud)

这个组合声明相当于以下两个声明:

struct br {
    int year;
    int km;
};
Run Code Online (Sandbox Code Playgroud)

typedef struct br Car;
Run Code Online (Sandbox Code Playgroud)