How to create a new instance of a struct

It depends if you want a pointer or not.

It's better to call your structure like this :

typedef struct s_data 
{
    int a;
    char *b;
    // etc..
} t_data;

After to instanciate it for a no-pointer structure :

t_data my_struct;
my_struct.a = 8;

And if you want a pointer you need to malloc it like that :

t_data *my_struct;
my_struct = malloc(sizeof(t_data));
my_struct->a = 8

I hope this answers your question.


The second way only works if you used

typedef struct listitem listitem;

before any declaration of a variable with type listitem. You can also just statically allocate the structure rather than dynamically allocating it:

struct listitem newItem;

The way you've demonstrated is like doing the following for every int you want to create:

int *myInt = malloc(sizeof(int));

Tags:

C

Struct

Instance