This is a common trick in C - using the dereference pointer expression instead of the actual type.
The rationale is: if you have
some_type *some_var = malloc(sizeof(*some_var));
and then change some_typeto some_other_type, the code will continue to work fine with just one change.
However, if you start with
some_type *some_var = malloc(sizeof(some_type));
then you have to change some_typein two places:
some_other_type *some_var = malloc(sizeof(some_other_type));
or your code will have an error.
, ( )
sizeof struct, .