Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating a struct referencing itself in C using custom type

Tags:

c

struct

typedef

I would like to create a struct with pointer to the property of the same type.

Ideally I would like to go for something like this, but this causes compilation error:

typedef struct {

  int data;
  Node *next;

} Node;

Solution I'm going for in this scenerio is:

typedef struct Node_s {

  int data;
  struct Node_s *next;

} Node_t;

Is it a valid approach or could it cause any obvious issues?

like image 766
h0ax Avatar asked Sep 01 '25 03:09

h0ax


1 Answers

It is a valid and idiomatic method of declaring self-referencing structures in C.

You don't have to introduce different names for the tag and the typedef name, the following is just as good:

typedef struct Node {
  int data;
  struct Node *next;
} Node;

There is no name clash because these names live in different namespaces.

Another valid method is like this:

typedef struct Node Node;
struct Node {
    int data;
    Node *next;
};
like image 62
n. 1.8e9-where's-my-share m. Avatar answered Sep 02 '25 15:09

n. 1.8e9-where's-my-share m.