如何在C中声明可变大小的2D数组?

ast*_*fan 8 c arrays multidimensional-array dynamic-memory-allocation

我的项目有问题.我必须制作一个可变大小的2D数组来存储一些预测错误.所以这是关于图像.麻烦的是我必须加载不同大小的图像,所以对于每个图像,我必须进入一个文件,相应的像素数的二维数组..我已经搜索了你的问题,但它不是我在看什么for.Can有人帮帮我吗?

谢谢

Jen*_*edt 7

如果你在函数范围内有一个现代的C编译器(至少是C99),它就像这样简单:

unsigned arr[n][m];
Run Code Online (Sandbox Code Playgroud)

这称为可变长度数组(VLA).如果阵列太大,可能会出现问题.因此,如果您有大图像,您可以这样做:

unsigned (*arr)[m] = malloc(sizeof(unsigned[n][m]));
Run Code Online (Sandbox Code Playgroud)

然后

free(arr);
Run Code Online (Sandbox Code Playgroud)


Aks*_*gue 0

您需要动态分配内存。使用双指针逻辑。

前任:

int n=10; <<-u can change this.
int **a;
a=(int **)malloc(sizeof(*int)*n);
for (int i=0;i<n;i++){
 a[i]=(int *)malloc(sizeof(int)*n);// or *(a+i)
}
Run Code Online (Sandbox Code Playgroud)