Dereferencing struct pointers can be done in one of two ways:
(*p).member = x; p->member = x; *p.member = x; /* WRONG */ *(p.member) = x; /* WRONG, same as above */
Here's the right way, with an example of typedefs, too.
#include <stdio.h>
#include <string.h>
typedef struct employee_t {
char name[40];
int onsite;
struct {
int floor;
char quadrant;
int cube;
} location;
} employee;
void assign_location( employee *who );
int main( void ) {
employee me;
strcpy( me.name, "Andy Lester" );
assign_location( &me );
if ( me.onsite ) {
printf( "%s is at location %d%c-%d\n", me.name,
me.location.floor, me.location.quadrant, me.location.cube );
}
return 0;
}
void assign_location( employee *who ) {
who->location.floor = 4;
who->location.quadrant = 'B';
who->location.cube = 14;
who->onsite = 1;
}
Andy Lester is at location 4B-14TOC | Prev | Next