【发布时间】:2021-07-19 03:15:51
【问题描述】:
我试图初始化一个由指针组成的数组:
我使用的代码是:
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;。或者,如果您的平台将 NULL 指针设为全位为零(大多数情况下如此),则使用memset。 -
@NateEldredge 谢谢 Nate - 我试过 memset,它成功了!!谢谢 - 我不明白的一件事,即使我将 C 设为 Const int,它仍然不起作用。这正常吗?
-
是的,这很正常。只是 C 处理
const的某种特殊方式的一部分。 C++ 不同。 -
@NateEldredge 谢谢队友
标签: arrays c pointers struct initialization