[英]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。 Student
是struct 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.