初始化结构中的结构

Initializing a struct within a struct

本文关键字:结构 初始化      更新时间:2023-10-16

我正在尝试初始化另一个具有多数组成员的结构。假设我想初始化一个带有 2 个 int 成员的结构,那么我可以使用以下内容:

firstStruct struct1 = { 5 , 7 };

但是假设我想初始化相同的结构,但这次它是另一个结构的成员:

(secondStruct 成员是 char 和 firstStruct)

secondStruct struct2 = { 'A' , { 6 , 8 } };

铆钉:

typedef struct firstStruct 
{
    int a;
    int b;  
} firstStruct;
typedef struct secondStruct
{
    firstStruct a;
    char b;
} secondStruct;

但这行不通。我该怎么做?

(我已经搜索了与此主题的其他帖子,但没有找到。也许我回答错了这个问题。

谢谢!

使用

secondStruct struct2 = {{ 6 , 8} , 'A'};

顺序很重要。

以下对我有用...

struct firstStruct {int a, b;};
firstStruct struct1 = { 5 , 7 };
struct secondStruct {char a; firstStruct b;};
secondStruct struct2 = { 'A' , { 6 , 8 } };

初始化顺序不正确。使用结构,您需要在正确的位置初始化每个成员。你在 char 之前声明了 firstStruct,所以你需要在 char 之前初始化它,如 {{5, 7}, 'A'}。

通常它应该像你写的那样工作。我能看到的唯一问题是你必须满足变量的顺序......

struct firstStruct 
{
    int a;
    int b;  
};
struct secondStruct
{
    S1 a;
    char b;
};
secondstruct = { { 1, 2 }, 3 };

要初始化结构中的结构,我认为需要将其放在括号中(尽管这在您的示例中是正确的)...