开天辟地的卷毛 2022-01-11 20:42 采纳率: 85.4%
浏览 13
已结题

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


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

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

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-01-11 21:10
    关注
    #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 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 1月11日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备