分配动态多个数组

时间:2014-08-16 10:44:20

标签: c multidimensional-array malloc dynamic-arrays

我们说我们有以下设计:

typedef struct {
  double **pdouble;
  int *pint
}foo;

现在我要分配:

foo *pfoo;
事实是,pdouble的总数是已知的,让我们说n;如果我们说** pdouble就像pdouble [a] [b],a也是众所周知的。表示a * b = n。但是b是动态的。 mean pdouble [1]可能包含b列,而pdouble [2]可能包含b'列数,b和b',b" ......将逐渐在程序中生成。 值得注意的是b + b' + b" + ... = n。 是否可以仅使用n和a来分配foo?

我要稍微编辑一下,这样我的问题就会变得更容易理解。

allocation_func(in size, int block_size)
foo *pfoo;

pfoo = (foo*) malloc(sizeof(foo))

/*some code here to do block_size number of *double which I don't know*/


foo->pdouble = (double**) malloc ( size * sizeof(double))

}

我忽略了每个人都知道的错误和其他需要的东西 多数民众赞成;

1 个答案:

答案 0 :(得分:1)

首先分配struct内存

 foo *pfoo = malloc(sizeof *pfoo); 

然后为struct成员double **pdouble;

分配内存
//for example purpose i take 50x50 array

pfoo->pdouble = malloc(50* sizeof(double *));

for(int i=0;i<50;i++)
    pfoo->pdouble [i] = malloc(50* sizeof(double ));

最后为struct成员int *pint

分配内存
 pfoo->pint=malloc(100*sizeof(int)); //100 is just for example