我正在研究一种树算法。以下是我的程序中的结构:

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()中,我想将boxtboxson传递给函数tsoNum()
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还是很陌生,而且觉得很难看到它。我希望有人能帮助我!

最佳答案

运算符->应用于指针,而不是structt是指针,因此t->son是正确的。但是,son不是指针,而是指针数组。因此

t->son->box

需要
t->son[someIndex]->box

其中someIndex是一个表达式,其值为0到3之间的int

关于c - 在结构中访问结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42321362/

10-11 19:03