可变大小的多维数组作为函数的参数?

时间:2015-09-18 00:37:04

标签: c function data-structures

我遇到的问题是定义函数的参数,其中数据结构在不同的文件中定义。在主文件中,我定义了数组nPart[3]={a,b,c};particle p[np];,其中a,b,c,np是整数。然后我定义了数组:

particle *pp[ nPart[0] ][ nPart[1] ][ nPart[2] ][ np ];

指向p数组中的不同粒子。

在第二个文件中,我想创建一个函数:

void function(int np, particle *p, particle *pp[ nPart[0] ][ nPart[1] ][ nPart[2] ][ np ]){...}

但是因为我在第一个文件中定义了nPart,所以我不确定应该怎么做。第二个文件的.h文件包含在第一个文档中。

我觉得我应该以某种方式将nPart作为参数传递给函数,以及有关pp位置的一些信息,然后能够在函数内构造pp但是关于我应该怎么做,我很遗憾。

编辑:我对术语和C的缺乏了解可能会让它更加混乱。

我将尝试举一个简单的例子:

在第一个文件的主要功能中,我定义:

int x[3] = {1,2,2};
int *p[ x[0] ][ x[1] ][ x[2] ];

然后在第二个文件中,我希望能够使用*p作为函数的参数。但是,由于x是在main函数中本地定义的,我不确定如何执行此操作。

我尝试根据*p定义x的原因是还有其他一些因素依赖于x,因此我希望能够仅调整x {1}}而不是手动更改所有内容。

编辑2: 似乎通过在nPart之前用*pp切换原始代码中参数的顺序,我能够做我想做的事。

在这里看到relemos的回答: Passing multidimensional arrays as function arguments in C

我想我第一次寻找答案时,并没有用正确的术语进行搜索。

0 个答案:

没有答案