C:结构定义中指向结构的指针

如何在该结构的定义中有指向下一个结构的指针:


typedef struct A {

  int a;

  int b;

  A*  next;

} A;

这是我第一次写的方式,但是没有用。


森栏
浏览 635回答 3
3回答

阿晨1998

您可以定义typedef并在一个语句中首先声明该结构,然后在后续定义中定义该结构。typedef struct A A;struct A{    int a;    int b;    A* next;};编辑:正如其他人提到的那样,没有前向声明,结构名称在结构定义内仍然有效(即,您可以使用struct A),但是在定义类型定义完成后,typedef才可用(因此,使用只是A无效的) )。仅使用一个指针成员,这可能并不太重要,但是,如果您具有包含许多自类型指针的复杂数据结构,则可能会有所减少。

HUX布斯

除了第一个答案之外,如果没有typedef和正向声明,这也可以。struct A {     int a;     int b;     struct A *next; };

繁星淼淼

拜托,您使用的是C语言,而不是C ++语言。如果您真的必须typedef一个结构体(大多数与我一起工作的程序员都不会¹),请执行以下操作:typedef struct _A {    int a;    int b;    struct _A *next;} A;以清楚地区分_A(在struct名称空间中)和A(在类型名称空间中)。¹ typedef隐藏它所指向的类型的大小和存储量-(我同意)论点是,在像C这样的低级语言中,试图隐藏任何东西都是有害的且适得其反。struct A随时随地习惯打字struct A。
打开App,查看更多内容
随时随地看视频慕课网APP