簡體   English   中英

指向結構指針的指針

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM