簡體   English   中英

嵌套的結構和指針

[英]nested structs and pointers

我正在學習嵌套結構,並遇到了以下代碼:

// Stack.h

#ifndef STACK_H
#define STACK_H

struct Stack{
    struct Link{
        void* data;
        Link* next;
        void initialize(void* dat, Link* nxt);
    }* head;
    void initialize();
    void push(void* dat);
    void* peek();
    void* pop();
    void cleanup();
};

#endif // STACK_H

Link結構在Stack的范圍內,要訪問Link,我必須使用Stack :: Link。

對於在}之后聲明以關閉Link結構的指針頭,我有些困惑。

這是否意味着在Stack范圍內有一個名為head的Link指針變量?

將頭指針定義為以下內容有什么作用:

};
Link* head;

}* head; //as per the code above?

沒有區別。 這兩個聲明都會導致Stack::head Stack::Link*類型的Stack::head成員。

這是否意味着在Stack范圍內有一個名為head的Link指針變量?

是的,完全正確。

關於第二個問題,兩種聲明樣式之間沒有語義上的區別。

它只是語義上的簡寫。 就像我們使用+= 是的,您有一個本地指針變量。

struct Stack{
    struct Link{
        void* data;
        Link* next;
        void initialize(void* dat, Link* nxt);
    };

    Link* head;  //Same as code as in your program
    void initialize();
    void push(void* dat);
    void* peek();
    void* pop();
    void cleanup();
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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