1

我想根据 C 中循环的迭代创建多个数组。

例如:

int i, size;

for ( i =0; i< 10; i++)
{
  size = i * 100
  create_array(i,size); // This loop iterates 9 times creating 9 different arrays
}

void create_array(int name, int size)
{
  double *array_name = (double*) malloc (size*sizeof(double));
  // perform operations on array_name

}

因此,我们最终得到 9 个数组,即 array_0、array_1、....array_9。这可以在 C 或 Fortran(不是 C++)中完成吗?

4

3 回答 3

2

Fortran 示例:

program create_arrays


type ArrayHolder_type
   integer, dimension (:), allocatable :: IntArray
end type ArrayHolder_type

type (ArrayHolder_type), dimension (:), allocatable :: Arrays

integer :: i, j

allocate ( Arrays (4) )

do i=1, 4
   allocate ( Arrays (i) % IntArray (2*i) )
end do

do i=1, 4
   do j=1, 2*i
      Arrays (i) % IntArray (j) = i+j
   end do
   write (*, *)
   write (*, *) i
   write (*, *) Arrays (i) % IntArray
end do


end program create_arrays
于 2013-06-19T17:38:51.217 回答
1

数组数组?

double *arrays[10];

for (int i = 0; i < 10; i++)
    arrays[i] = malloc(some_size * sizeof(double));

现在您有一个“数组”数组,方便地命名arrays[0]arrays[9].


如果您希望数组的数量也是动态的,请使用双指针:

double **arrays;

arrays = malloc(number_of_arrays * sizeof(double *));

/* Allocate each sub-array as before */
于 2013-06-19T15:11:01.027 回答
0

您可以这样做,但不要使用名称 array_0,array_1,....array_9。通过这样做,您将拥有一个类似的矩阵(您可以访问您的数组数组 [1]、数组 [2]...)

    int i, size;

double ** array = (double**) malloc (size*sizeof(double*));
for ( i =0; i< 10; i++)
{
  size = i * 100
  array[i] = create_array(size); 
}

double* create_array( int size)
{
  double *array_name = (double*) malloc (size*sizeof(double));
  // perform operations on array_name;
  return arrayname;

}
于 2013-06-19T15:17:51.437 回答