gpt4 book ai didi

c - 分配动态多个数组

转载 作者:行者123 更新时间:2023-11-30 19:19:10 24 4
gpt4 key购买 nike

假设我们有以下设计:

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

现在我要分配:

foo *pfoo;

问题是 pdouble 的总数是已知的,假设它是 n;如果我们说 **pdouble 类似于 pdouble [a][b],则 a 也是已知的。意思是a*b =n。但 b 是动态的。意味着 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))

}

我忽略了错误和其他大家都知道的必需内容。
仅此而已;

最佳答案

首先分配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

关于c - 分配动态多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25339383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com