Kri*_*hna 1 c pointers structure
我有一个如图所示的结构.当我有一个指向结构的指针时,我能够正常初始化或修改它的任何成员.
struct node{
int key;
int nno;
char color;
struct node* out;
struct node* next;
struct node* pre;
};
Run Code Online (Sandbox Code Playgroud)
但是,当我将结构指针的地址传递给函数并使用双指针捕获它时,并尝试使用该双指针访问成员时,我的编译器抛出错误'member undefined'.
void DFSVisit(struct node** u){
*u->color = 'g';
struct node* v;
while(*u->out != NULL){
v = *u->out;
if(v->color == 'w'){
v->pre = *u;
DFSVisit(&v);
}
}
*u->color = 'b';
}
Run Code Online (Sandbox Code Playgroud)
而且,这就是我访问该功能的方式.
DFSVisit(&root);
Run Code Online (Sandbox Code Playgroud)
Root是正确初始化的指针.而且,Root是一个全局变量.
*u->color解析*(u->color)而不是你想要的,(*u)->color所以编译器抱怨因为node*没有color成员(因为它是指针而不是结构!).因此要么显式插入括号,(*u)->color要么引入局部变量:struct node *node = *u;并使用node->color