主页 分类 关于

C语 结构体 共用体 检举类型

  1. 结构体
    1. 结构体的定义:
  2. 在声明类型的同时定义变量
  3. 省略结构体名, 直接定义结构体变量
  4. 结构体变量也可以定义数组
  • 结构体的普通变量 通过 . 来访问成员 结构体的指针变量 通过 -> 来访问成员 给变量类型别名 // #define 别名 要替换的数 (作用类似于)typedef 数据类型 别名; // 区别 typedef 要声明数据类型 而 #define 不用别名 变量名 = 赋值; 结构体数组typedef 数据类型 名称; { 数据类型1 变量名1; 数据类型2 变量名2; 数据类型3 变量名3;}别名;// 然后再调用别名 要声明的变量 [数组]; 结合一起typedef struct 结构体名{ 数据类型 成员变量名1; 数据类型 成员变量名2; 数据类型 成员变量名3; }别名; // 定义别名后, 原先的结构体名称也可以用 结构体指针数据名 *指针 = &地址;printf("%s\n", b->成员)// 或者printf("%s\n", (*b).成员) 注意: 访问成员用 . 点号 共用体结构体和共用体的区别: 共用体可以共用内存, 结构体不行共用体: graph LR A[(" 共用体 ")]-->B[" 变量名1变量名2变量名3 "] 结构体: graph LR A[(" 结构体 ")]-->B[" 变量名1"] A[(" 结构体 ")]-->C[" 变量名2"] A[(" 结构体 ")]-->D[" 变量名3"] 共用体的定义: union 共用体名{ 成员列表}; 枚举类型 枚举类型作用就是美化代码, 让代码由复杂到简单 枚举类型的定义: enum 标识名{ 枚举项0, 枚举项1, 枚举项2; }; 注意: 枚举项没赋值的情况下是从 0 开始, 赋值之后是从 赋值的那个值往后 依次加 1
  • 给变量类型别名 // #define 别名 要替换的数 (作用类似于)typedef 数据类型 别名; // 区别 typedef 要声明数据类型 而 #define 不用别名 变量名 = 赋值; 结构体数组typedef 数据类型 名称; { 数据类型1 变量名1; 数据类型2 变量名2; 数据类型3 变量名3;}别名;// 然后再调用别名 要声明的变量 [数组]; 结合一起typedef struct 结构体名{ 数据类型 成员变量名1; 数据类型 成员变量名2; 数据类型 成员变量名3; }别名; // 定义别名后, 原先的结构体名称也可以用 结构体指针数据名 *指针 = &地址;printf("%s\n", b->成员)// 或者printf("%s\n", (*b).成员) 注意: 访问成员用 . 点号 共用体结构体和共用体的区别: 共用体可以共用内存, 结构体不行共用体: graph LR A[(" 共用体 ")]-->B[" 变量名1变量名2变量名3 "] 结构体: graph LR A[(" 结构体 ")]-->B[" 变量名1"] A[(" 结构体 ")]-->C[" 变量名2"] A[(" 结构体 ")]-->D[" 变量名3"] 共用体的定义: union 共用体名{ 成员列表}; 枚举类型 枚举类型作用就是美化代码, 让代码由复杂到简单 枚举类型的定义: enum 标识名{ 枚举项0, 枚举项1, 枚举项2; }; 注意: 枚举项没赋值的情况下是从 0 开始, 赋值之后是从 赋值的那个值往后 依次加 1
    1. 结构体数组
    2. 结合一起
  • 结构体指针
  • 共用体
    1. 结构体和共用体的区别: 共用体可以共用内存, 结构体不行
  • 共用体:
  • 结构体:
    1. 共用体的定义:
  • 枚举类型
    1. 枚举类型的定义:
  • C语学习笔记

    结构体

    • 概念: 结构体是一种可以由自己定义的数据类型
    • 结构体可以定义成全局变量也可以定义在函数里面成局部变量
    • 先声明, 再定义

    结构体的定义:


    struct 结构体名{
    数据类型 成员变量名1; // 成员列表
    数据类型 成员变量名2; // 成员列表
    数据类型 成员变量名3; // 成员列表
    }

    在声明类型的同时定义变量

    struct 结构体名{ 
    数据类型 成员变量名1;
    数据类型 成员变量名2;
    数据类型 成员变量名3;
    }变量名列表;

    省略结构体名, 直接定义结构体变量

    • 注意: 只能定义一次, 接下来不能再定义结构体变量
    struct {
    数据类型 成员变量名1;
    数据类型 成员变量名2;
    数据类型 成员变量名3;
    }变量名列表;

    结构体变量也可以定义数组

    struct 结构体名{ 
    数据类型 成员变量名1;
    数据类型 数组变量名2 [ 数组 ];
    数据类型 成员变量名3;
    };

    struct 结构体名 变量名 = { 成员1, { 数组1, 数组2, 数组3 }, 成员3 }

    结构体的普通变量 通过 . 来访问成员
    结构体的指针变量 通过 -> 来访问成员

    • 给变量类型别名
    // #define 别名 要替换的数 (作用类似于)
    typedef 数据类型 别名; // 区别 typedef 要声明数据类型 而 #define 不用

    别名 变量名 = 赋值;

    结构体数组

    typedef 数据类型 名称;   
    {
    数据类型1 变量名1;
    数据类型2 变量名2;
    数据类型3 变量名3;
    }别名;

    // 然后再调用

    别名 要声明的变量 [数组];

    结合一起

    typedef struct 结构体名{
    数据类型 成员变量名1;
    数据类型 成员变量名2;
    数据类型 成员变量名3;
    }别名; // 定义别名后, 原先的结构体名称也可以用

    结构体指针

    数据名 *指针 = &地址;

    printf("%s\n", b->成员)
    // 或者
    printf("%s\n", (*b).成员)

    注意: 访问成员用 . 点号

    共用体

    结构体和共用体的区别: 共用体可以共用内存, 结构体不行

    共用体:


    graph LR A[(" 共用体 ")]-->B[" 变量名1
    变量名2
    变量名3 "]

    结构体:


    graph LR A[(" 结构体 ")]-->B[" 变量名1"] A[(" 结构体 ")]-->C[" 变量名2"] A[(" 结构体 ")]-->D[" 变量名3"]

    共用体的定义:


    union 共用体名
    {
    成员列表
    };

    枚举类型

    • 枚举类型作用就是美化代码, 让代码由复杂到简单

    枚举类型的定义:


    enum 标识名
    {
    枚举项0, 枚举项1, 枚举项2;
    };

    注意: 枚举项没赋值的情况下是从 0 开始, 赋值之后是从 赋值的那个值往后 依次加 1










    作者: 我叫史迪奇
    本文来自于: https://sdq3.link/C-struct-union-enum.html博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议