如何在该结构的定义中有指向下一个结构的指针: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无效的) )。仅使用一个指针成员,这可能并不太重要,但是,如果您具有包含许多自类型指针的复杂数据结构,则可能会有所减少。
HUX布斯
TA贡献1876条经验 获得超6个赞
除了第一个答案之外,如果没有typedef和正向声明,这也可以。
struct A
{
int a;
int b;
struct A *next;
};
繁星淼淼
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。
- 3 回答
- 0 关注
- 634 浏览
添加回答
举报
0/150
提交
取消