C++可以使用.获取union、struct中的成员变量的地址
示例代码如下所示
- #include
- #include
-
- struct u128 { uint64_t v64; uint64_t v0; };
-
- int main() {
- union { unsigned __int128 ui; struct u128 s; } union_temp_m128;
- void* p1 = &union_temp_m128;
- void* p2 = &(union_temp_m128.ui);
- void* p3 = &(union_temp_m128.ui);
- void* p4 = &(union_temp_m128.s.v64);
- void* p5 = &(union_temp_m128.s.v0);
- printf("p1: %p\n", &union_temp_m128);
- printf("p2: %p\n", &(union_temp_m128.ui));
- printf("p3: %p\n", &(union_temp_m128.s));
- printf("p4: %p\n", &(union_temp_m128.s.v64));
- printf("p5: %p\n", &(union_temp_m128.s.v0));
- if(p1==p2) {
- printf("p1==p2\n");
- }
- else {
- printf("p1!=p2\n");
- }
- if(p1==p3) {
- printf("p1==p3\n");
- }
- else {
- printf("p1!=p3\n");
- }
- if(p1==p4) {
- printf("p1==p4\n");
- }
- else {
- printf("p1!=p4\n");
- }
- if(p1==p5) {
- printf("p1==p5\n");
- }
- else {
- printf("p1!=p5\n");
- }
-
- return 0;
- }
'运行
运行结果如下所示
- p1: 0x7ffeb8fe8380
- p2: 0x7ffeb8fe8380
- p3: 0x7ffeb8fe8380
- p4: 0x7ffeb8fe8380
- p5: 0x7ffeb8fe8388
- p1==p2
- p1==p3
- p1==p4
- p1!=p5