我遇到的问题是定义函数的参数,其中数据结构在不同的文件中定义。在主文件中,我定义了数组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
我想我第一次寻找答案时,并没有用正确的术语进行搜索。