如何在c中创建一个n大小的数组

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 中可以工作的东西)会附带一个错误。有人可以指出我正确的方向吗?新手有机会提供帮助吗?

在此输入图像描述

hyd*_*yde 5

这个错误是不言自明的。删除定义中的初始化:

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)