Can anyone explain how exactly are the two lines inside fun() that are assigning values to offset & address working ?Code:void main()
{
struct a
{
struct b
{
int i;
float f;
}x;
struct c
{
int j;
float g;
}y;
}z;
fun(&z.y);
}
void fun(struct c * p)
{
int offset;
struct b * address;
offset = (char *) & ((struct c *) (&((struct a *)0) -> y) -> j) - (char *)((struct a*)0);
address = (struct b *)((char *) & (p -> j) - offset);
address -> i = 200;
}