c - Why accessing fields of struct through a typedef-ed pointer does not work? -
i have these declarations:
typedef struct egobject { int magicnumber; } egobject; typedef struct egobject* ego; ego e; //printf("%d",e->magicnumber); i want magicnumber out of e, e->magicnumber doesn't work. what's right way of doing this?
when declare struct, allocate memory struct:
egobject e; when declare pointer struct, typedef-ed or not, allocate space pointer, not struct. in order access field of struct need allocate struct first. particular way in not matter - allocate statically, dynamically, or in automated storage, must allocate memory it:
ego e = malloc(sizeof(*e)); that enough access field writing. reading field requires initialization, because malloc-ed block contains uninitialized bytes in area allocated magicnumber:
e->magicnumber = 123; now can print magicnumber way code did:
printf("%d",e->magicnumber); note: if choose dynamic allocation malloc, need free object once done using it:
free(e); // avoid memory leaks
Comments
Post a Comment