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