在 C 中初始化了一个指针数组 - 可能无法初始化可变大小的对象

Initialized a pointer array in C - Variable sized object may not be initialized

我试图初始化一个由指针组成的数组:

我使用的代码是:

int c = 15;
Struct *Pointer[c] = {NULL};

但是 C 给我一条错误信息说:

"message": "variable-sized object may not be initialized",

但是当我将代码更改为:

Struct *Pointer[15] = {NULL};

成功了!

有什么办法可以解决吗?我不能使用 15 而不是变量“c”

干杯!

您需要循环初始化数组:

for (int i = 0; i < c; i++)
    Pointer[i] = NULL; // set all of these values to NULL

现在,Pointer 的大小将为 c

此外,这个 link 也可能有帮助:Array[n] vs Array[10] - Initializing array with variable vs real number

可变长度数组不能在声明中初始化。

可以使用标准字符串函数memset初始化变长数组占用的内存

例如

#include <string.h>

//...

int c = 15;
Struct *Pointer[c];

memset( Pointer, 0, c * sizeof( *Pointer ) );

注意可变长度数组应具有自动存储持续时间,即它们可以在函数中声明并且可能没有存储说明符 static