结构类型转换
我有一个
structure { int a; char b; } st;
有没有办法对结构成员st.a
进行类型转换? 因为在很少的地方我想把它当作int
而在少数几个地方我想要它作为Char*
我建议使用联盟 :
struct { union { int a; char *ptr; } u; char b; } st;
假设sizeof(int) == sizeof(char*)
成立,您可以使用st.ua
或st.u.ptr
访问内存中的相同值。
为了它的价值,可以考虑使用size_t
而不是int
作为字段的类型。 这样,你的代码在64位版本中仍然是正确的(其中int
可能仍然是32位但指针是64位)。
你想要什么叫做工会 。