zoukankan      html  css  js  c++  java
  • 结构与联合

    1. 结构和联合都是由多个不同的数据类型成员组成,但在任何同一时刻,联合中只存放了一个被选中的成员(所有成员共用一块地址空间),而结构的所有成员都存在(不同成员的存放地址不同)。
    2. 对于联合的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,而对于结构的不同成员赋值是互不影响的。
    #include <stdio.h>
    union{
      int i;
      char x[2];
    }a;
    int main(){
        a.x[0] = 10;
        a.x[1] = 1;
        printf("%d", a.i);
    }

    结果是266(低位低地址,高位高地址,内存占用情况0x010A)

    int main(){
        union{
            int i;
            struct{
                char first;
                char second;
            }half;
        }number;
        number.i = 0x4241;
        printf("%c%c
    ", number.half.first, number.half.second);
        number.half.first = 'a';
        number.half.second = 'b';
        printf("%x
    ", number.i);
        return 0;
    }

    AB(0x41,对应‘A’,是低位;0x42,对应‘B’,是高位)

    6261(number.i和number.half共用一块地址空间)

  • 相关阅读:
    8626 原子量计数
    17229 Lry,你除了2还是2
    11153 kill boss
    1143 多少个Fibonacci数
    8614 素数__
    We Chall-Training: Stegano I-Writeup
    We Chall-Training: Get Sourced-Writeup
    We Chall-Prime Factory-Writeup
    CTF入门指南
    pwnable.kr-collision -Writeup
  • 原文地址:https://www.cnblogs.com/yingl/p/5816249.html
Copyright © 2011-2022 走看看