Har*_*att 1 c initialization declaration variable-length-array
我对 C 很陌生,但我在一个看似非常微不足道的问题上遇到了麻烦。我想做的就是创建一个大小的数组,这样在运行时我不知道它的大小并且无法指定它。下面的代码运行得非常好。
int main()
{
int LuhnsArray[15] = {0};
for(int i = 0; i < 15; i++)
{
printf("%i ", LuhnsArray[i]);
printf("\n");
}
}
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试这样的事情时:
int main()
{
int length = 15;
int LuhnsArray[length] = {0};
for(int i = 0; i < length; i++)
{
printf("%i ", LuhnsArray[i]);
printf("\n");
}
}
Run Code Online (Sandbox Code Playgroud)
我认为合乎逻辑的东西(例如,我认为在 python 中可以工作的东西)会附带一个错误。有人可以指出我正确的方向吗?新手有机会提供帮助吗?
这个错误是不言自明的。删除定义中的初始化:
int LuhnsArray[length]; /* = {0}; nope */
Run Code Online (Sandbox Code Playgroud)
相反,memset如果您希望将其归零,请使用:
memset(LuhnsArray, 0, sizeof(LuhnsArray));
Run Code Online (Sandbox Code Playgroud)
请注意如何memset获取字节大小,我们可以使用运算符方便地为数组(但不是指针!)获取字节大小sizeof。
或者只是一个 for 循环:
for(int i = 0; i < length; i++)
{
LuhnsArray[i] = 0;
}
Run Code Online (Sandbox Code Playgroud)