我想提示用户输入一个数字,然后让计算机创建那么多数组。
例如,如果用户输入了 number 5
,我会希望创建5 integer arrays
被调用array1[64], array2[64], array3[64], array4[64], and array5[64]
的。
您可以使用指针数组
如下所示:-
int n,i;
//enter n
int **array = malloc(sizeof(int*)*n);
for(i=0;i<n;i++)
array[i] = malloc(sizeof(int)*64);
/* Do Stuffs*/
/* Free Memory */
for(i=0;i<n;i++)
free(array[i]);
free(array);
任何时候你说,“我想要 N 个相同类型的变量,命名为var1
, var2
, var3
, ..., varN
”,你真正想要的是一个数组;在这种情况下,您需要一个数组数组。
假设您在编译时知道第二维(即,它始终是 的 Nx64 元素数组int
),那么这很容易:
#include <stdlib.h>
...
size_t numArrs = 0;
// get numArrs from user
int (*arrs)[64] = malloc( sizeof *arrs * numArrs );
Presto - 您已经分配了一个 Nx64 数组int
,您可以像访问任何普通的 2D 数组一样访问它:
arrs[i][j] = some_value();
arrs[0]
是你的第一个 64 元素数组int
,arrs[1]
是你的第二个 64 元素数组int
,等等。