c - 如何将指针传递给二维数组,其大小由C中的指针定义?

标签 c struct

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

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”吗?

非常感谢!

最佳答案

尝试在堆上分配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){....}

关于c - 如何将指针传递给二维数组,其大小由C中的指针定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15438564/

相关文章:

c - 包装类成员访问

c++ - 每次我到处使用结构而不是类时,我会杀死一只小猫吗?

c - 从类型 'int’ 分配给类型 ‘struct' 时类型不兼容,反之亦然

以多进程方式计算斐波那契数?

arrays - 如何在 HiveQL 中将字符串转换为结构数组

c - 在结构内部声明结构时指向结构的指针

C - 调用新函数时的指针

c - 赋值中的类型不兼容,为什么我不能这样做?

c - 如何从 "conversion to ‘char’ 中删除警告 ‘int’ 可能会改变它的值”

c - Debian 中库 libpq 的问题