[英]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
。
此外,此链接也可能有所帮助: Array[n] vs Array[10] - Initializing array with variable vs real number
可变长度 arrays 可能未在其声明中初始化。
可以使用标准字符串 function memset
来初始化变长数组占用的 memory。
例如
#include <string.h>
//...
int c = 15;
Struct *Pointer[c];
memset( Pointer, 0, c * sizeof( *Pointer ) );
请注意,可变长度 arrays 应具有自动存储持续时间,即它们可以在 function 中声明,并且可能没有存储说明符static
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.