struct - 部分初始化跳过中间组件

struct - Partial initialize skipping middle components

假设我有一个 struct 具有以下形式

struct one {
    double d;
    char c1;
    char c2;
    int i;
};

我知道我可以像这样进行部分初始化

one s1={2.71,'e'};

只声明前两个组件的值,其他两个留空。但是,如果我只想初始化另一个 one struct 的最后两个组件怎么办?我是不是被迫写

one s2={0.0,'[=12=]','a',42};

或者有什么方法可以让我只给出关于 c2i 的说明,将 dc1NULL 初始化留给编译器?

我不知道你为什么要这样做,但是你可以定义一个构造函数,比如:

one( char c2Arg, int iArg ) : c2(c2Arg), i(iArg) {}

并这样称呼它:

one s1('a', 42);

与其让前两个成员未初始化,不如为它们分配默认值:

one( char c2Arg, int iArg ) : d(0.0), c1('[=12=]'), c2(c2Arg), i(iArg) {}