为什么这样做:
struct person {
char name[50];
short mental_age;
} p1 = {"Donald", 4};
但不是这样:
typedef struct {
char name[50];
short mental_age;
} PERSON p1 = {"Donald", 4};
在定义这个结构时,有没有办法可以创建一个typedef结构并初始化Donald?
答案 0 :(得分:6)
typedef
是其他类型的别名。你正在做的是创造一个方便typedef
。由于typedef
的目的是创建类型别名,因此无法使用它来定义变量。
你必须这样做:
typedef struct {
// data
} mytype;
mytype mydata = {"Donald", 4};
答案 1 :(得分:3)
我所知道的最好的方法是将严格定义与typedef语句从struct声明中分离出来,类似于:
struct sPerson
{
char name[50];
short mental_age;
};
typedef struct sPerson PERSON;
PERSON p1 = {"Donald", 4};