指向尚未声明的结构的指针

可能重复:
undefined C struct forward声明

即使我没有声明结构,如何声明指向结构的指针?

#include int main(){ struct s{ struct p *ptr; }; } 

为什么以上编译成功?

这是可能的,因为编译器只需要处理指向它的指针就不需要了解结构。

这是一种常用的技术,通常称为“不透明指针”。