C:指向结构定义中的结构的指针
我怎样才能有一个指向这个结构定义中的下一个结构的指针:
typedef struct A { int a; int b; A* next; } A;
这是我第一次写它,但它不起作用。
您可以定义typedef,并在一个语句中首先声明结构,然后在后续定义中定义结构。
typedef struct AA; struct A { int a; int b; A* next; };
编辑:正如其他人所提到的,没有正向声明的结构名称仍然是有效的内部结构定义(即你可以使用struct A
),但typedef是不可用的,直到typedef定义完成后(所以只使用A
wouldn'无效)。 这只是一个指针成员可能无关紧要,但如果你有一个复杂的数据结构,有很多自我types的指针,可能不那么有用。
除了第一个答案,没有typedef和forward声明,这也应该没问题。
struct A { int a; int b; struct A *next; };
您在A*
之前缺lessstruct
typedef struct A { int a; int b; struct A* next; } A;
你可以没有前向声明:
struct A { int a; int b; struct A *next; };
请,你在C,而不是C ++。
如果你真的必须input一个结构体(而且大多数我所使用的程序员不会¹),请执行以下操作:
typedef struct _A { int a; int b; struct _A *next; } A;
清楚地区分_A
(在struct
namespace中)和A
(在type namespace中)。
typedef
隐藏了它所指向的types的大小和存储空间(我同意这一点)是,像C这样的低级语言,试图隐藏任何东西都是有害的,适得其反的。 习惯于在你的意思是struct A
时inputstruct A
typedef struct { values } NAME;
这是typedef结构的简短方法,我认为它是最简单的符号,只是不要把infront的名字放在后面。
你可以这样称呼它
NAME n; NAME *n; // if you'd like a ptr to it.
这个方法有什么问题?