数组的内联初始化

时间:2019-01-29 11:55:52

标签: c arrays struct visual-studio-2015 initialization

我有这个结构:

struct Foo {
    int a;
    int* b;
};

然后我为它创建一个实例,

int x [] = { 5, 6 };
Foo y = { 2, x };

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

struct Foo y = { 2, (int[]) { 5, 6 } };

但是上面的示例不起作用...如何实现?

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

我从智能感知中得到了这个错误:

  

不允许广播到不完整的数组类型“ int []”

构建错误:

  

错误C4576带有括号的类型后跟一个初始化程序列表是一种非标准的显式类型转换语法

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

1 个答案:

答案 0 :(得分:6)

对于您而言,Foo不是一种类型。

尝试

struct Foo y = { 2, (int[]) { 5, 6 } };

It works as expected


编辑:

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


编辑1:

关于C4567,see this