结构类型转换

时间:2011-05-30 06:33:17

标签: c types

我有一个

structure {
    int a;
    char b;
} st;

有没有办法对结构成员st.a进行类型转换? 因为在少数几个地方我想要它int而在少数几个地方我想要它Char*

2 个答案:

答案 0 :(得分:10)

我建议使用union

struct {
  union {
    int a;
    char *ptr;
  } u;
  char b;
} st;

假设sizeof(int) == sizeof(char*)成立,您可以使用st.u.ast.u.ptr在内存中访问相同的值。

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

答案 1 :(得分:1)

您想要的是unions