• 【C】Re10 共用体、枚举、类型定义


    Union 联合体共用体

    结合体:

    每个成员的内存空间都是独立存在的,互不干涉

    int 成员、double 成员、char 成员 = 4 + 8 + 1 【13字节大小】 取成员字节占用之和作为这个结构体的大小

    联合体:

    每个成员的内存空间在一起共用

    int 成员、double 成员、char 成员 = 8 > 4 > 1 【8字节大小】 取成员最大字节占用类型作为这个共用体的大小

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    union U {
        int a;
        short b;
        char c;
    };
    void test() {
        printf("union U size -> %llu
    ", sizeof(union U));
    
        union U u = { // 共用体只有占用字节大的那个数据类型获取,小类型会被覆盖
                100,
                20,
                30
        };
    
        printf("sum -> %d
    ", u.a + u.b + u.c); // 100 + 100 + 100
    }
    
    void test2() {
        union U u = { // 所有的成员变量最后都会指向最大字节占用的成员属性
                100,
                20,
                30
        };
        u.a = 20;
        printf("sum -> %d
    ", u.a + u.b + u.c);
        u.b = 30;
        printf("sum -> %d
    ", u.a + u.b + u.c);
        u.c = 40;
        printf("sum -> %d
    ", u.a + u.b + u.c);
    }
    
    int main() {
        test2();
        return 0;
    }

    Enumeration 枚举

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    enum Season {
        Spring,
        Summer,
        Autumn,
        Winter
    };
    
    enum boolean {
        false = 0, true = 1
    };
    
    int main() {
    
        enum boolean isTrue = true;
        if (isTrue) {
            printf("yes is true");
        }
    
        return 0;
    }

    TypeDef的使用

    给数据类型起一个别名

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef int integer ; // 基本数据类型别名
    
    struct S {
        int aaa;
        char bbb;
    };
    typedef struct S sss ; // 结构体数据类型别名
    
    void typedefUsage() {
        int aaa = 100;
        integer aa = 100;
    }
    
    typedef int * integerPointer ; // 适合给指针类型起别名
    typedef char * characterPointer ;
    
    int main() {
        return 0;
    }
  • 相关阅读:
    Maker DAO 与稳定币 Dai
    0x 协议治理体系,Part-2:Q&A
    Gnosis白皮书
    Digix:密码学资产中的黄金标准
    闪电网络主心骨——HTLC(哈希时间锁定)简介
    如何减少PDF文件的大小
    以太坊:创建 ERC-20 token
    Sublime Text 3 快捷键大全
    数据库学习第二季第三集:各种编程语言从数据库中获得数据方式小结
    数据库学习第二季第三集:各种编程语言从数据库中获得数据方式小结
  • 原文地址:https://www.cnblogs.com/mindzone/p/13962901.html
Copyright © 2020-2023  润新知