• union的用法


    注:下面的所有结果都是在小端机器上实现的。

    union:多个变量共享一块内存

    #include<stdio.h>
    union ss
    {
    	int a;
    	char b;
    };
    int main()
    {
    	ss aa;
    	aa.a = 1;
    	printf("%d %d
    ", aa.a, aa.b);
    	aa.b = 2;
    	printf("%d %d", aa.a, aa.b);
    	return 0;
    }
    

      运行结果:

    解释:下面是变量在内存中的存放位置

    变量a内存大小是4个字节,所以存放在整个内存中,变量b内存大小是一个字节,所以只是存放在内存的低地址的第一个字节,小端机器上会把低位字节存放在低位地址上,当做aa.a=1;时在低地址的第一个字节上写入1,而这块内存是a与b共享的,所以此时b的值也会变成1.接着再做aa.b=2;对b重新赋值为2,此时会在b的 内存上写入2,同时也会覆盖掉原本内存上的1,这样当输出a的值时就变成了2,输出b的值也会变成2.

      

  • 相关阅读:
    差分约束系统详解
    AC自动机详解
    KMP算法详解
    ST算法详解
    Trie详解
    欧拉路径详解
    树上差分详解
    LCA详解
    树链剖分详解
    树的直径详解
  • 原文地址:https://www.cnblogs.com/wuyepeng/p/9862389.html
Copyright © 2020-2023  润新知