标签: c types
我有一个
structure { int a; char b; } st;
有没有办法对结构成员st.a进行类型转换? 因为在少数几个地方我想要它int而在少数几个地方我想要它Char*
st.a
int
Char*
答案 0 :(得分:10)
我建议使用union:
struct { union { int a; char *ptr; } u; char b; } st;
假设sizeof(int) == sizeof(char*)成立,您可以使用st.u.a或st.u.ptr在内存中访问相同的值。
sizeof(int) == sizeof(char*)
st.u.a
st.u.ptr
对于它的价值,请考虑使用size_t代替int作为a字段的类型。这样,你的代码在64位版本中仍然是正确的(其中int可能仍然是32位但指针是64位)。
size_t
a
答案 1 :(得分:1)
您想要的是unions。