内联初始化数组

Joã*_*ulo 2 c arrays struct initialization visual-studio-2015

我有这个结构:

struct Foo {
    int a;
    int* b;
};
Run Code Online (Sandbox Code Playgroud)

然后我就像这样为它创建一个实例:

int x [] = { 5, 6 };
Foo y = { 2, x };
Run Code Online (Sandbox Code Playgroud)

但是,我想创建x内联数组,可能是这样的:

struct Foo y = { 2, (int[]) { 5, 6 } };
Run Code Online (Sandbox Code Playgroud)

但上面的例子不起作用......我怎样才能做到这一点?

---------编辑:

我从intellisense得到这个错误:

转换为不完整的数组类型"int []"是不允许的

构建错误:

错误C4576括号类型后跟初始化列表是非标准显式类型转换语法

我正在使用Visual Studio 2015(v140).

Sou*_*osh 6

在你的情况下,Foo不是一种类型.

尝试

struct Foo y = { 2, (int[]) { 5, 6 } };
Run Code Online (Sandbox Code Playgroud)

It works as expected


编辑:

您只需要以free()编程方式使用分配器功能(malloc()和系列)分配内存.分配器函数未返回的内存不需要free()由程序员-d.


编辑1:

关于C4567,请看这个

  • @JoãoPaulo 初始化列表是整个 `= { ... }` 的东西,它在 C 和 C++ 中都存在。`(int[]) { 5, 6 }` 是一个复合字面量,它是一个仅在 C 中可用的特性,在 C++ 中不可用。 (2认同)