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