How to access member of a structure using address of another member ?

Suppose I have a structure having fields name, age, salary and have passed address of age to a function fun( ).

How I can access the other member of the structure using the address of age?

Ans:

struct emp

{

char name[20] ;

int age ;

float salary ;

} ;

main( )

{

struct emp e ;

printf ( “\nEnter name: ” ) ;

scanf ( “%s”, e.name ) ;

printf ( “\nEnter age: ” ) ;

scanf ( “%d”, &e.age ) ;

printf ( “\nEnter salary: ” ) ;

scanf ( “%f”, &e.salary ) ;

fun ( &e.age ) ;

}

fun ( int *p )

{

struct emp *q ;

int offset ;

offset = ( char * ) ( & ( ( struct emp * ) 0 ) -> age ) – ( char * ) ( ( struct emp* ) 0 ) ;

q = ( struct emp * ) ( ( char * ) p – offset ) ;

printf ( “\nname: %s”, q -> name ) ;

printf ( “\nage: %d”, q -> age ) ;

printf ( “\nsalary: %f”, q -> salary ) ;

}

Subscribe / Share

It's very calm over here, why not leave a comment?

Leave a Reply




Categories

Powered by Yahoo! Answers