结构类型转换

问题描述

|| 我有一个
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.u.a
st.u.ptr
访问内存中的相同值。 对于它的价值,考虑使用
size_t
代替
int
作为
a
字段的类型。这样,您的代码在64位版本中仍将是正确的(其中
int
仍可能是32位,而指针是64位)。     ,        您想要的就是工会。