C中的数组声明

hol*_*oly 1 c arrays

如何使用函数的参数在函数内声明一个数组?

我的代码是:

double function_2(int a)
{
  int t[a];
}
Run Code Online (Sandbox Code Playgroud)

发生错误:

Expression must have a constant value.
Run Code Online (Sandbox Code Playgroud)

oua*_*uah 6

您的代码是完全有效的C代码.

您正在使用VLA(可变长度数组).这是一个c99功能,您必须确保您的编译器支持c99代码.

如果您使用gcc,默认gcc设置-std=gnu89为C89 + GNU扩展.使用-std=c99-std=gnu99gcc编译程序.

如果您使用的是MSVC,遗憾的是它不支持c99,因此您无法在此编译器中使用c99功能.

编辑:

如果编译器不支持VLA,则可以使用动态内存分配:

#include <stdlib.h>

double function_2(int a)
{
    // Allocate array object
    int *t = malloc(a * sizeof *t);

    if (!t) {
        // Handle malloc errors
    }

    // Write your program here: ...

    // Free array object
    free(t);
}
Run Code Online (Sandbox Code Playgroud)