有个结构体赋值和转换的问题请教一下
本帖最后由 linuxlife123 于 2015-06-09 08:21 编辑有个结构体赋值和转换的问题请教一下,代码如下:
struct A {
struct *a1
inta2
union {
long a3
void *a4
}
}
struct B {
struct *b1
intb2
union {
long b3
void *b4
}
}
struct C
{
struct c1;
struct c2;
}
void func_x1(void)
{
struct c*c
struct A *a
给结构体c 赋值;
a->a4 = c;
func_x2(a)
}
void func_x2(void *data)
{
struct B *b;
struct c *c;
b = data;
c = b->b4;
}
问题:a赋值给void指针data,这个步骤是没有问题的,然后 data在赋值给结构体b以后
然后再把 b->b4赋值给结构体c,此时c的值和 函数func_x1里面c的值还能保持一样吗 ? 可以用offsetof宏来检查一下A->a4和B->b4对应同样的偏移,如果是的,那就表示同样的c。
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) 很明显一样,结构体A和B是一样的结构体。
页:
[1]