->
&.
演算子ではなく、ユニオンアドレスで実際のユニオンメンバーにアクセスできるかどうか疑問に思っていました。それが可能な場合、それは許可されますか?
質問する
415 次
1 に答える
2
addressof操作を使用してユニオンのメモリにアクセスできます&(union)
例えば
union foo {
int32_t bar;
int64_t baz;
} afoo;
void * address = &afoo;
ただし、ユニオンのポイントは、さまざまなタイプで構成されるデータの「共有」領域への透過的なアクセスを許可することです。char *
データにアクセスしたい場合は、char *
メンバーを使用して、その方法でデータにアクセスできます。
* addressが別のタイプであると偽って、次を使用できます。
int64_t *abar = (int64_t*)address;
printf("%llu\n", *abar);
于 2012-06-07T04:59:12.460 に答える