结构类型转换

我有一个

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.uast.u.ptr访问内存中的相同值。

为了它的价值,可以考虑使用size_t而不是int作为字段的类型。 这样,你的代码在64位版本中仍然是正确的(其中int可能仍然是32位但指针是64位)。

你想要什么叫做工会 。