gpt4 book ai didi

c - 写一个函数到 malloc 双指针

转载 作者:太空狗 更新时间:2023-10-29 14:52:31 25 4
gpt4 key购买 nike

我需要编写一个使用 malloc 创建双指针的函数。

这就是我通常声明双指针的方式:

double **G; //Create double pointer to hold 2d matrix

*G = malloc(numNodes * sizeof(double*));
for(i = 0; i < numNodes; i++)
{
G[i] = malloc(numNodes*sizeof(double));
for (j = 0; j < numNodes; j++)
{
G[i][j] = 0;
}
}

现在我尝试将其替换为:

double **G;
mallocDoubleArr(G, numNodes);

函数是:

void mallocDoubleArr(double **arr, int size)
{
int i, j;

*arr = malloc(size * sizeof(double*));

for(i = 0; i < size; i++)
{
arr[i]= malloc(size*sizeof(double));
for (j = 0; j < size; j++)
{
arr[i][j] = 0;
}
}
}

为什么这行不通?

最佳答案

您还需要一个“间接”,换句话说,通过引用传递 G,就像指向指向 float 指针的指针一样:

void mallocDoubleArr(double ***arr, int size);

然后称它为

mallocDoubleArr(&G, numNodes);

相应地修改mallocDoubleArr,例如

(*arr)[i] = malloc(size*sizeof(double));

关于c - 写一个函数到 malloc 双指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19525265/

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