问题描述
||
我有一个
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位)。
, 您想要的就是工会。