首页 文章

分配动态多个数组

提问于
浏览
-1

假设我们有以下设计:

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“......将逐渐在程序中生成 . 值得注意的是bb'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 回答

  • 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
    

相关问题