【问题标题】:How to create n number of arrays based on user input in C [closed]如何根据 C 中的用户输入创建 n 个数组 [关闭]
【发布时间】:2013-09-18 17:17:18
【问题描述】:

我想提示用户输入一个数字,然后让计算机创建那么多数组。

例如,如果用户输入数字 5,我希望创建名为 array1[64], array2[64], array3[64], array4[64], and array5[64]5 integer arrays

【问题讨论】:

  • 用户条目是否有上限。你可以通过 malloc 获得一些活力,但总的来说它不会像你想要的那样工作
  • 即使您可以让它工作,您将如何获得所需的阵列?即数组N?其他语言可以处理这种情况,但 C 不是。

标签: c arrays dynamic


【解决方案1】:

你可以使用指针数组

如下:-

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);

【讨论】:

    【解决方案2】:

    任何时候你说,“我想要 N 个相同类型的变量,命名为 var1var2var3、...、varN”,你真正想要的是一个数组;在这种情况下,您需要一个数组数组。

    假设您在编译时知道第二维(即,它总是将是int 的 Nx64 元素数组),那么这很容易:

    #include <stdlib.h>
    ...
    size_t numArrs = 0;
    
    // get numArrs from user
    
    int (*arrs)[64] = malloc( sizeof *arrs * numArrs );    
    

    Presto - 您已经分配了一个 int 的 Nx64 数组,您可以像访问任何普通的 2D 数组一样访问它:

    arrs[i][j] = some_value();
    

    arrs[0]int 的第一个 64 元素数组,arrs[1]int 的第二个 64 元素数组,等等。

    【讨论】:

      猜你喜欢
      • 2013-05-16
      • 2015-08-14
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      相关资源
      最近更新 更多