C 如何初始化包含另一个结构的结构?

C 如何初始化包含另一个结构的结构?,c,struct,typedef,C,Struct,Typedef,我是新手,我尝试在C代码上创建一个stuct结构。我不明白我怎么能把一个结构体的结构体化。有人帮我吗? 我有: 例如,我将3种类型的区域化。但它们是不完整的,因为我不知道如何在区域[DIM]中插入结构医院和病区的值。语法是什么?我希望他能很好地解释这个问题。如何初始化包含另一个结构的结构 初始化结构有几种方法。为了简化,下面的示例使用比您提供的更小的结构 下面将用值(={,,{,,};)说明初始化,然后用零={0}: typedef struct { int count; flo

我是新手,我尝试在C代码上创建一个stuct结构。我不明白我怎么能把一个结构体的结构体化。有人帮我吗? 我有:

例如,我将3种类型的区域化。但它们是不完整的,因为我不知道如何在区域[DIM]中插入结构医院和病区的值。语法是什么?我希望他能很好地解释这个问题。

如何初始化包含另一个结构的结构

初始化结构有几种方法。为了简化,下面的示例使用比您提供的更小的结构

下面将用值(
={,,{,,};
)说明初始化,然后用零
={0}

typedef struct {
    int count;
    float cash;
    char item[50];
}Purchase;

typedef struct {
    int accnt;
    char acct_name[50];
    Purchase purch;
} Acct;

Acct acct = {100123, "Robert Baily", {15, 12.50, "Tires"}};
//Or, using member names to self document the initialization statement as suggested in comments:
Acct acct1 = Acct acct = {.accnt=100123, .acct_name="Robert Baily", {.count=15, .cash=12.50, .item="Tires"}};

Acct acct2 = {0};

int main(void)
{
    printf("acct = %d\nAcct_name = %s\nitem = %s\ncount = %d\ncash = %3.2f\n", acct.accnt, acct.acct_name, acct.purch.item, acct.purch.count, acct.purch.cash);
    printf("acct2 = %d\nAcct_name = %s\nitem = %s\ncount = %d\ncash = %3.2f\n", acct2.accnt, acct2.acct_name, acct2.purch.item, acct2.purch.count, acct2.purch.cash);
    return 0;
}   

尽管这些都很小,但它们说明了如何使用更大、更复杂的结构。我建议,对于您的结构,这将是非常乏味的,并且可能没有必要使用第一种方法<实际程序中的code>struct声明通常通过归零进行初始化。i、 例如,
{0}

使用嵌套的
{}
初始化结构元素,例如,
{1,2,3,4,5}
。尽管进行了初始化,但此代码不会编译。发布实际代码。@Alberto Torrisi This typedef struct diagnosisDate,healingDate{unsigned int day;char month[20];unsigned int year;};是不正确的,没有意义。好的,谢谢。我如何打印可变区域[0]?好的,伙计们,我做了:D打印结构花了很多时间。。。谢谢大家的快速回复!我希望将来成为一名专业开发人员来帮助社区:)我更喜欢
={.accnt=100123…
以避免愚蠢的错误\@P\u J\uuuu-提供一个示例,说明作为结构成员的
char[]
变量的外观。例如
acct.purch.item=“Tires”
不起作用。@P\u J\u-如果我的编辑解决了您的问题,我们可以整理一下评论吗?谢谢。
typedef struct {
    int count;
    float cash;
    char item[50];
}Purchase;

typedef struct {
    int accnt;
    char acct_name[50];
    Purchase purch;
} Acct;

Acct acct = {100123, "Robert Baily", {15, 12.50, "Tires"}};
//Or, using member names to self document the initialization statement as suggested in comments:
Acct acct1 = Acct acct = {.accnt=100123, .acct_name="Robert Baily", {.count=15, .cash=12.50, .item="Tires"}};

Acct acct2 = {0};

int main(void)
{
    printf("acct = %d\nAcct_name = %s\nitem = %s\ncount = %d\ncash = %3.2f\n", acct.accnt, acct.acct_name, acct.purch.item, acct.purch.count, acct.purch.cash);
    printf("acct2 = %d\nAcct_name = %s\nitem = %s\ncount = %d\ncash = %3.2f\n", acct2.accnt, acct2.acct_name, acct2.purch.item, acct2.purch.count, acct2.purch.cash);
    return 0;
}