c++ - 初始化未命名的结构指针/数组

标签 c++ c arrays struct initialization

struct A
{
    int member1;
    int member2;
    struct B
    {
        int member3;
        int member4;
    } *b;
};

如何初始化 A 并同时创建一个 B 数组来填充 b 字段?我想要一个静态变量,所以最好是函数调用。

我试过这个但它不起作用(我认为它不会):

static A a = {
    1,
    2,
    & { {3, 4}, {5, 6} },
}

最佳答案

我认为这段代码的问题在于这一行:

& { {3, 4}, {5, 6} }

问题是 {{3, 4}, {5, 6}} 是一个右值(一个值,而不是一个对象),你不能获取右值的地址。毕竟,这个对象的内存从何而来?但是,您可以将其重写为

A::B elems[2] = {{3, 4}, {5, 6}};
static A a = {
    1,
    2,
    elems
};

从现在开始,您就有了一个可以指向的左值。

关于c++ - 初始化未命名的结构指针/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4687041/

相关文章:

arrays - 如何根据满足特定条件的列将 2 列数组的值分配给单列数组

c++ - 在 GCC 中关闭 COW

c - 引用指向另一个结构内部结构内部结构的指针

php - 如何分解字符串数组并将结果存储在另一个数组中 (php)

java - 读取整数字符串并将整数添加到数组

c - 限制限定符编译错误

C++。我试图通过在开关中使用数组来获取用户输入,但是当我运行代码时它显示段错误?

c++ - 列表迭代器不可取消引用

c++ - 卷积着色器不起作用?

C: byte-copy unsigned char 值