Я предлагаю использовать union :
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-битным).