我需要在C中创建一个全局数组,其大小由用户输入

基本上我需要在C中创建一个数组的全局变量。 数组将为[n] [22] [n + 1],其中n为3,4,5或6,由用户选择。

有没有办法做到这一点,或者我应该只做数组[6] [22] [7],并且处理它的函数只使用最多n的部分(如果这有意义)?

我之前必须要做一个计算机科学课,但不记得究竟该怎么做。

对于一个小的数组(好吧,假设数据类型合理),你可能会更好地做出你在问题中提到的[6][22][7]分配 – 这不像你会浪费那么多空间。 不幸的是,C99可变长度数组不适用于全局数组。 这意味着您唯一的其他选择是使用malloc() / free()动态分配。

您可以使用文件范围指针指向您在函数中动态分配的数组的第一个元素( malloc函数)。

如前所述,在这种特殊情况下,做除了[6][22][7]的静态分配之外的任何事情都是浪费时间。 如果你真的想使用malloc动态分配数组:

 /* Suppose that you want a [5][22][6] */ int main() { int i,j,k; int ***boo; int d_1,d_2,d_3; d_1=5; d_2=22; d_3=6; /* +------------------------------------------+ | For each dimension, a malloc is needed | +------------------------------------------+ */ boo = malloc(d_1*sizeof(int*)); for (i=0;i 

这基本上可以解决问题。 如果您有更多的数据,它可能会有用。

不要忘记使用free()释放内存