Я пытаюсь получить доступ к элементам i, f и ch следующей структуры.
struct a{
struct b{
int i;
float f;
char ch;
}x;
struct c{
int j;
float g;
char ch;
}y;
};
Это должно быть сделано путем передачи адреса структуры c функции и вычисления ее смещения для доступа к структуре b
struct a z;
fun(&z.y);
Функция выглядит следующим образом:
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 = 400;
address->f = 3.14;
address->ch = 'c';
}
Несмотря на большие попытки, всегда выдает ошибку lvalue required as unary '&' operand
Я знаю значение ошибки, но не могу сделать это здесь.
Заранее спасибо.