0

我正在开发一个具有多个输入参数的项目(其中一些需要在代码中计算),所以我将它们全部放在一个结构中。

typedef struct{
    int N_cell;
    int N_node;
}INPUT;

在主函数中,我声明

INPUT in;

之后有几行用于计算 in.N_cell 和 in.N_node。现在我定义

double *pos_node[in.N_node];
for (i = 0; i < in.N_node; i++)
    pos_node[i] = (double *) calloc(3, sizeof(double));

然后我需要将此数组的指针传递给我将其定义为的函数

void func(double *pos_node[????]){....}

我的问题是,我应该在“???”中写什么?地方?我应该使用 in.Node 并在参数列表中添加“INPUT in”吗?

非常感谢!

4

2 回答 2

0

您还需要为 pos_node 分配内存:

double **pos_node = calloc (in.N_node, sizeof (double *));

(c99 中提供了可变长度数组,但大多数人还不喜欢使用 c99)

然后很容易看到如何传递数组。C 中的数组只是一个内存块,因此double *array[]可以正确地写为double **array:将地址保存为双倍的内存块的地址。

于 2013-03-15T17:32:08.717 回答
0

尝试在堆上分配 pos_node:

double **pos_node = calloc(in.N_node, sizeof(double*));
for (i = 0; i < in.N_node; i++)
    pos_node[i] = (double *) calloc(3, sizeof(double));

void func(double **pos_node){....}
于 2013-03-15T17:32:26.907 回答