我正在研究一种树算法。以下是我的程序中的结构:
typedef struct{
double m;
double x[DIM];
double v[DIM];
} Particle;
typedef struct{
double lower[DIM];
double upper[DIM];
} Box;
typedef struct Node{
Particle p;
Box box;
struct Node *son[4];
} Node;
现在我已经编写了一个函数myFunctA(),它由以下给出:
void myFunctA(Particle *p, Node *t){
int b=soNum(&t->box, &t->son->box, p); // Why does "&t->son->box" not work?
// do stuff ...
}
在函数myFunctA()中,我想将
box
的t
和box
的son
传递给函数t
。soNum()
由int soNum(Box *box, Box *sonbox, Particle *p){
// do stuff ...
}
我试图通过使用不起作用的
soNum()
来实现这一点。我也试过&t->son->box
。我得到的错误总是:error: request for member ‘box’ in something not a structure or union
int b=soNum(&t->box, &t->son->box, p);
我认为这很容易,但我对C还是很陌生,而且觉得很难看到它。我希望有人能帮助我!
最佳答案
运算符->
应用于指针,而不是struct
。t
是指针,因此t->son
是正确的。但是,son
不是指针,而是指针数组。因此
t->son->box
需要
t->son[someIndex]->box
其中
someIndex
是一个表达式,其值为0到3之间的int
。关于c - 在结构中访问结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42321362/