我正在学习嵌套结构并遇到以下代码:
// 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
链接结构在Stack的范围内,访问链接我必须使用Stack :: Link。
我对关闭Link结构后声明的指针头感到有点困惑。
这是否意味着在Stack范围内有一个名为head的链接指针变量?
将头指针定义为:
的效果是什么};
Link* head;
VS
}* head; //as per the code above?
答案 0 :(得分:0)
没有区别。这两个声明都会生成Stack::head
类型的Stack::Link*
成员。
答案 1 :(得分:0)
这是否意味着在
Link
范围内有一个名为head的Stack
指针变量?
是的,这是完全正确的。
关于你的第二个问题,两种声明风格之间没有语义差异。
答案 2 :(得分:0)
它只是语义的一个简短的手。就像我们如何使用+=
一样。
是的,你有一个本地指针变量。
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();
};