结构类型转换

kir*_*ran 2 c types

我有一个

structure {
    int a;
    char b;
} st;
Run Code Online (Sandbox Code Playgroud)

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

Fre*_*abe 10

我建议使用联盟:

struct {
  union {
    int a;
    char *ptr;
  } u;
  char b;
} st;
Run Code Online (Sandbox Code Playgroud)

sizeof(int) == sizeof(char*)hold 的假设下,您可以使用st.u.a或者访问内存中的相同值st.u.ptr.

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

  • 标准C不接受匿名工会.海湾合作委员会. (2认同)