How can i have a pointer to the next struct in the definition of this struct? :
typedef struct A {
int a;
int b;
A* next;
} A;
this is how i first wrote it but it does not work.
How can i have a pointer to the next struct in the definition of this struct? :
typedef struct A {
int a;
int b;
A* next;
} A;
this is how i first wrote it but it does not work.
You can define the typedef and forward declare the struct first in one statment, and then define the struct in a subsequent definition.
typedef struct A A;
struct A
{
int a;
int b;
A* next;
};
Edit: As others have mentioned, without the forward declaratation the struct name is still valid inside the struct definition (i.e. you can used struct A
), but the typedef is not available until after the typedef definition is complete (so using just A
wouldn't be valid). This may not matter too much with just one pointer member, but if you have a complex data structure with lots of self-type pointers, may be less wieldy.
In addition to the first answer, without a typedef and forward declaration, this should be fine too.
struct A
{
int a;
int b;
struct A *next;
};
You can go without forward declaration:
struct A {
int a;
int b;
struct A *next;
};
You are missing the struct
before the A*
typedef struct A {
int a;
int b;
struct A* next;
} A;
Please, you're in C, not C++.
If you really must typedef a struct (and most programmers that I work with would not¹), do this:
typedef struct _A {
int a;
int b;
struct _A *next;
} A;
to clearly differentiate between _A
(in the struct
namespace) and A
(in the type namespace).
¹typedef
hides the size and storage of the type it points to ― the argument (and I agree) is that in a low-level language like C, trying to hide anything is harmful and counterproductive. Get used to typing struct A
whenever you mean struct A
.