关于c primer plus的问题,如何实现c语言的变长数组?


int quarters = 4;
int regions = 5;
double sales[regions] [quarters];//这是变长数组(VAL)

我想用vs2022去实现这个功能,但是好像vs不支持C99,有没有办法使得vs能支持C99,或者有没有一个可以编译变长数组的编译器分享一下呀?

#include <stdio.h>
#include <stdlib.h>

int **create(int m, int n)
{
    int **a = (int **)malloc(m * sizeof(int *));
    for (int i = 0; i < m; i++)
        a[i] = (int *)malloc(n * sizeof(int));
    return a;
}

void destroy(int **a, int m)
{
    for (int i = 0; i < m; i++)
        free(a[i]);
    free(a);
}

void print(int **a, int m, int n)
{
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
            printf("%2d ", a[i][j]);
        printf("\n");
    }
}

int main()
{
    int m, n;
    scanf("%d%d", &m, &n);
    int **a = create(m, n);
    for (int i = 0; i < m; i++)
        for (int j = 0; j < n; j++)
            a[i][j] = i * n + j;
    print(a, m, n);
    destroy(a, m);
    return 0;
}
$ gcc -Wall main.c
$ ./a.out
4 5
 0  1  2  3  4 
 5  6  7  8  9 
10 11 12 13 14 
15 16 17 18 19