繁体   English   中英

C中的struct typedef。变量或类型?

[英]struct typedef in C. Variable or type?

所以我想知道这两者之间的区别。

struct Record {
    int ID,
    char *name
}Student;


typedef struct Record {
    int ID,
    char *name
}Student;

我知道第一个学生是结构变量。 但是第二个学生是变量还是类型名?

typedef struct Record { ... } Student;

这将为它创建一个新的类型struct Record以及一个类型为Student的typedef。 Studentstruct Record的别名。 这些将是相同的变量声明:

struct Record studentRecord;
Student studentRecord;

通常,typedef的名称将与struct相同,以便在声明变量时可以删除struct关键字。

typedef struct Record { ... } Record;

Record record;   // Don't need to write "struct Record".

在第二个使用typedef示例中, Student是类型名称。

使用typedef ,如果删除了typedef关键字,则类型名称将出现在变量名称出现的位置:

        int var_name;
typedef int type_name;

        struct SomeType { ... } some_var;
typedef struct SomeType { ... } SomeType;

请记住,在C语言中, typedef名称是其他某种类型名称的别名,而不是新类型本身。 当您与typedef名称同时定义结构类型时,形式规则是已经定义的类型(例如,在将类型名称别名为该类型之前,例如,通过struct SomeType { ... } (例如,通过typedef struct SomeType { ... } SomeType; )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM