[英]Pointer to a Structure pointer
我有一個如圖所示的結構。 當我有一個指向結構的指針時,我通常可以初始化或修改其任何成員。
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);
根是正確初始化的指針。 而且,根是全局變量。
*u->color
解析為*(u->color)
而不是所需的(*u)->color
因此編譯器會抱怨,因為node*
沒有color
成員(因為它是指針而不是結構!)。 因此,要么顯式插入(*u)->color
類的括號,要么引入局部變量: struct node *node = *u;
並使用node->color
您是否知道間接(解引用)運算符*
優先級低於元素選擇運算符->
優先級? 也就是說,您應該編寫(*u)->color
,而不是*u->color
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.