循环可以在每次运行时创建一个新的,不同的数组吗?

时间:2018-08-22 18:15:29

标签: c arrays loops

我想在C中创建一个循环,每次运行时都会生成一个新的不同数组。能做到吗?如果可以,怎么办?

类似的东西:

int main()
{
   for(int i = 0; i < 10; i++)
   {
     int arrayi[5] = {0};
   }
   return 0;
}

那么预期的行为是拥有10个数组,分别称为array1,array2,array3,array4,array5,array6,array7,array8,array9,array10;每个元素包含5个元素,每个元素为0。

4 个答案:

答案 0 :(得分:5)

这取决于您到底想做什么。在您的示例中,您将创建10个独立的数组,但也许它们的使用不是那么有用,因为:

for(int i = 0; i < 10; i++)
{
  int arrayi[5] = {0};  // The array is created here.
} // The array goes out of scope and is destroyed here. It can't be used in the next
  // iteration of the for loop.
// You can't use any of the arrays created here.

例如,如果要在for循环中使用数组,也许就是您想要的。

也许您希望阵列保持不变,以便以后使用。然后您有2个选择:

  1. 制作二维数组:

int arr[10][5]; // Use by indexing eg arr[4][1] is the second 
                // element of the fifth array.
// or
int arr[50]; // A flat packed array, usually accessed via 
             // index: row*rowlength + colomn 
  1. 将每个数组定义为单独的命名对象(非常罕见,这是必需的):

int arrForUse[5];
int arrForDifferentUse[7];
...
int arrXXX[15];

如果数组确实用于不同的事情,并且根本不相关,那么您将要执行此操作。它们不会被命名为arr1arr2,...。

答案 1 :(得分:1)

arrayi[5]

您可能想要的是此数组[i] [j]。 如果我正确理解了您的问题,那么您将需要以下内容:

  for(int i = 0; i < 10; i++)
  for(int j = 0; j < 10; j++)
   {
     array[i][j] = /*use some random function like rand()*/;
   }

答案 2 :(得分:0)

不能使用循环从头开始替换变量名称中的字符。例如。 i中的arrayi不能用循环或其他任何方式代替!

您需要做的是:

  • 之前声明数组,并用循环填充它们
  • 声明一个2D数组,然后循环malloc,并用指向那些malloced数组的指针填充每个位置。

答案 3 :(得分:-1)

如果数组很大,则可以考虑使用malloc系列函数。