私は示されているような構造を持っています。また、構造体へのポインターがある場合、そのメンバーのいずれかを正常に初期化または変更できます。
struct node{
int key;
int nno;
char color;
struct node* out;
struct node* next;
struct node* pre;
};
しかし、構造体ポインターのアドレスを関数に渡し、ダブルポインターを使用して同じアドレスをキャプチャし、そのダブルポインターを使用してメンバーにアクセスしようとすると、コンパイラーが「メンバー未定義」というエラーをスローします。
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';
}
そして、これが私が関数にアクセスした方法です。
DFSVisit(&root);
ルートは、適切に初期化されたポインターです。また、Root はグローバル変数です。