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 ) ;

}

This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>