C++是否可以使用.获取union、struct中的成员变量的地址

C++可以使用.获取union、struct中的成员变量的地址

示例代码如下所示

#include <stdio.h>
#include <stdint.h>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值