目前我正在将VLA分配给指针,如下所示

struct Foo {
    int* array;
};

int array[size];

struct Foo foo = {
    .array = array;
};

有可能用"匿名"数组替换它吗?

我try 过的是:

struct Foo foo = {
    .array = (int[size]) {} // fatal error: variable-sized object may not be initialized
};

我所希望的是:

struct Foo foo = {
    .array = int[size]; // something similar to this if I am making any sense.
};

PS:我不是在寻找动态内存分配(malloc/calloc).

推荐答案

有可能用"匿名"数组替换它吗?

具体来说,您正在询问如何创建匿名变长array.C不支持这些.

对于复合文字((){}),C标准规定:

C17 §6.5.2.5 ¶1类型名称应指定完整的对象类型或未知大小的数组,但不能指定变长数组类型.

您唯一的 Select 是非标准alloca/_alloca.

C++相关问答推荐

AVX-512 BF 16:直接加载bf 16值,而不是从fp 32转换

代码打印正确输出次数过多(CS50)

字符数组,字符指针,在一种情况下工作,但在另一种情况下不工作?

当main函数调用被重构时,C函数给出错误的结果

手动矢量化性能差异较大

为什么GCC可以调用未定义的函数?

编译的时候g++通常会比GCC慢很多吗?

#If指令中未定义宏?

C由四个8位整数组成无符号32位整数

将uintptr_t添加到指针是否对称?

在Rust和C之间使用ffi时如何通过 struct 中的[U8;1]成员传递指针

防止C++中递归函数使用堆栈内存

C中的FREE函数正在触发断点

I2C外设在单次交易后出现故障

为什么电路板被循环删除?

从另一个宏函数调用C宏

赋值两侧的后置增量,字符指针

C循环条件内的函数

当另一个指向 const 的指针观察到数据时,通过指针更改数据是否安全?

运行以下 C 程序时出现分段错误