C++语法:union的大小 内存变量的解释

<1> union的大小是整个union结构中最大的字节的部分的字节数。

<2>内存值得解释

    int *jieshou=(int *)malloc(sizeof(int));
    *jieshou=111111;
    double *aaaa=(double *)jieshou;
    printf("%d %f\n",*jieshou,*aaaa);

两个值输出的不同,也就说系统是按照指针的类型解释内存的值。

可以做如下实验

    char *cc=(char *)malloc(sizeof(char));
    *cc='z';
    int *iii=(int *)cc;
    *(jieshou+1)=0x00000000;
    *(jieshou+2)=0x00000000;
    *(jieshou+3)=0x00000000;

    printf("%c-----%d\n",*cc,*ii);

已知‘z’的ASCII码是122.用int * 类型的指针指向cc的内存地址,如果直接输出ii指向内容的值,得到的是一些乱码,因为ini是4个字节,char是一个字节,而剩下的三个字节是不确定的0-1码,所以会输出乱码。

加上红线部分,将剩下的三个字节的值设为0x00000000,可见输出122。正确。这个例子也可见,VC编译器使得数据的存储模式是小端存储,即高字部分在高地址,低字节部分在低地址。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值