用一个变量在C中创建一个二维数组



我有一个整数变量x,我需要用它来制作两个2D数组,但我得到了一个错误"无法分配一个常量大小为0的数组"。在做了一些研究之后,我显然需要使用malloc,但我不知道如何将其应用于我目前的情况。

我需要两个阵列:

int firMat[x][5];
int secMat[5][x];
#include <stdio.h>
#include <stdlib.h>
int main(void) {
    int x = 2;
    int **firMat;//int firMat[x][5];
    int **secMat;//secMat[5][x];
    int i;
    firMat = malloc(x * sizeof(int*));
    for(i = 0; i< x; ++i)
        firMat[i] = malloc(5 * sizeof(int));
    secMat = malloc(5 * sizeof(int*));
    for(i = 0; i< 5; ++i)
        secMat[i] = malloc(x * sizeof(int));
    //do stuff E.g. fir[2][1] = 21;
    //release E.g.
    //for(i = 0; i< x; ++i)
    //    free(firMat[i]);
    //free(firMat);
    return 0;
}

如果您使用C99,这将起作用。它将创建一个"可变长度数组",遗憾的是,在C11中,VLA已减少为"可选"。

为了使用malloc,通常我会放弃双数组表示法,将内存视为平面一维数组,然后数组[I][j]变为ptr[I*cols+j]。

尝试像下面的示例中那样初始化x

#define x 2 //outside the function

然后像这个一样使用x

int firMat[x][5];
int secMat[5][x];

相关内容

  • 没有找到相关文章

最新更新