为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
森栏 2019-11-30 14:38:27
如何在该结构的定义中有指向下一个结构的指针:typedef struct A {  int a;  int b;  A*  next;} A;这是我第一次写的方式,但是没有用。
查看完整描述

3 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

您可以定义typedef并在一个语句中首先声明该结构,然后在后续定义中定义该结构。


typedef struct A A;


struct A

{

    int a;

    int b;

    A* next;

};

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


查看完整回答
反对 回复 2019-11-30
?
HUX布斯

TA贡献1876条经验 获得超6个赞

除了第一个答案之外,如果没有typedef和正向声明,这也可以。


struct A 

    int a; 

    int b; 

    struct A *next; 

};


查看完整回答
反对 回复 2019-11-30
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

拜托,您使用的是C语言,而不是C ++语言。


如果您真的必须typedef一个结构体(大多数与我一起工作的程序员都不会¹),请执行以下操作:


typedef struct _A {

    int a;

    int b;

    struct _A *next;

} A;

以清楚地区分_A(在struct名称空间中)和A(在类型名称空间中)。


¹ typedef隐藏它所指向的类型的大小和存储量-(我同意)论点是,在像C这样的低级语言中,试图隐藏任何东西都是有害的且适得其反。struct A随时随地习惯打字struct A。


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 634 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信