将包含50个随机整数的数组(mainArr)拆分为5个不同的数组(每个数组中包含10个整数)的最佳方法是什么?
例如,arr1持有mainArr的0-9值,arr2持有10-19 ....
我已经四处寻找但是一切都将数组分成两个不同的数组。 任何帮助,将不胜感激。感谢。
答案 0 :(得分:3)
更通用一点:
int mainArr[50];
int *arr[5];
int i;
for(i = 0; i < 5; i++)
arr[i] = &mainArr[i*10];
然后访问mainArr[10]
作为arr[1][0]
。
答案 1 :(得分:0)
只需定义一个函数,将每个索引0..49映射到另一个索引0..4。显而易见的功能是除以10.模数5也可以。
int a[50];
int b[5][10];
for (size_t i = 0; i < 50; i++)
b[i/10][i%10] = a[i];
或
int a[50];
int b[5][10];
for (size_t i = 0; i < 50; i++)
b[i%5][i/5] = a[i];
有关重新使用相同内存的示例,请参阅@nnn的解决方案。