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

Baz*_*oka 8 c

可能重复:
未定义的C struct forward声明

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

#include<stdio.h>

int main(){
    struct s{
     struct p *ptr;
   }; 
}
Run Code Online (Sandbox Code Playgroud)

为什么以上编译成功?

dre*_*lax 10

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

这是一种常用的技术,通常称为"不透明指针".

  • 实际上,`struct p`行_is_是一个声明. (3认同)
  • @Parminder*C编程语言*中有一个名为"自引用结构"的部分. (2认同)