我想在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。
答案 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个选择:
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
int arrForUse[5];
int arrForDifferentUse[7];
...
int arrXXX[15];
如果数组确实用于不同的事情,并且根本不相关,那么您将要执行此操作。它们不会被命名为arr1
,arr2
,...。
答案 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
不能用循环或其他任何方式代替!
您需要做的是:
malloc
,并用指向那些malloced
数组的指针填充每个位置。答案 3 :(得分:-1)
如果数组很大,则可以考虑使用malloc
系列函数。