初始化typedef结构

时间:2016-03-12 11:14:13

标签: c struct

为什么这样做:

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?

2 个答案:

答案 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};