请问一下,c语言中,二元数组。例如a[m][n];如何才能做到自己输入m、n,然后在确定二维数组的空间。

2025-01-03 18:28:15
推荐回答(3个)
回答1:

方法1:新C语言标准C99里面有动态声明数组,不过pc机上VC系列不行,用gcc没有问题
方法2:如同二楼的说法,用指针数组来再次分配,但是内存存放也许并不连续,至于其所说的string是C++的类型,C语言没有
方法3:按照二维数组行序优先存放的原则,分配一块连续空间,用指针来按下标操作
示例:
#include
#include

int m, n, *a;
scanf("%d%d", &m, &n);
a = (int *)malloc(sizeof(int) *m *n);
a[i *n + j] = 123; /*就是a[i][j],但是不能如此用两个下标*/

回答2:

以前是不可以这样做的 现在最新的一些编译器可以支持 变长数组

回答3:

指针数组。
或者直接用string等函数的数组都支持变长。