美文网首页
结构体,共用体,枚举,宏定义,预处理

结构体,共用体,枚举,宏定义,预处理

作者: 娇娇_5038 | 来源:发表于2023-12-04 10:04 被阅读0次

    1.结构体

    1.1 为什么需要结构体?

    没有结构体之前,在C语言中,数据的组织依靠 变量+数组,最初最简单的时候,只需要使用基本数据类(int,char,float,double) 来定义单个变量,需要几个变量就定义几个变量,后来情况变复杂了,有时候需要很多意义相关的变量,这个时候数组出现了,数组解决了需要很多类型相同,意义相关变量的问题,但是数组是有限的,数组最大的不足在于,一个数组只能存储很多类型相关的变量

    使用一个数据结构来保存一个学生所以的信息:姓名,学号,性别这时候需要结构体

    1.2 什么是结构体?

    结构体是一种里面包含很多种元素,这些元素的数据类型可以相同,也可以不同,所以结构体是一种数据封装的方法

    新增关键字 struct ,是struct定义结构体

    定义了一个Student结构体

    注:结构体类型的定义实在函数的外面,结构体定义的是一个新的组合类型,而不是变量,不会消耗内存,在需要定义的地方,再使用结构体类型定义变量

    struct Student{

    char name[20];//学生姓名

    unsigned int num;//学号

    int isMale;//性别

    }

    int main(void){

    //定义了一个结构体变量

    struct Student s1;

    //给结构体进行赋值

    s1.name='jiaojiao';

    s1.num=110200;

    s1.isMale=1;

    return 0;

    }

    1.3数据结构:把庞大复杂的数据用一定的方法组织起来,便于操作(查找,增加,删除)等,这叫做数据结构

    结构体和数组的关联,数组是一种特殊的结构体,特殊之处在于封装内的各个元素类型是相同的。结构体各个元素类型可以是不同的

    1.4使用结构体步骤

    1.4.1定义结构体,定义结构体需要在全局里定义

     struct Student {

    char name[20];//学生姓名

    unsigned int num;//学号

    int isMale;//性别

    }

    1.4.2.使用结构体 ,使用的是结构的体的各个元素,而不是结构体本身

    struct Student s1;

    s1.name='jiaojiao';

    s1.num=110200;

    s1.isMale=1;

    1.4.3.结构体初始化

    1.4.3.1 完成初始化

    {xxx,xxx,xx,x,x}

    第二种不完全初始化,如果某个元素没初始化,值是随机的

    {

    .a=xx,

    .b=xx,

    .c=xx

    }

    2.共用体

    共用体,共用体内只有一个东西,只是它被好几个名字(或者类型)公用

    共用体定义和结构体定义一样,使用也一样,只是关键字不一样

    Union

    2.1定义共用体 

    2.2使用共用体步骤

    2.2.1第一步定义共用体类型

    union myUnion

    {

    int a;

    char b;

    float c;

    }

    2.2.2使用公用体

    int main(void){

    union myUnion u1;

    u1.a=124;

    printf("u1.a = %d,u1.b = %d",u1.a,ui.b)

    }

    2.3结构体和公用体组合使用

    #include <stdio.h>

    struct Male{

    int age;

    char name[20];

    int basketball;

    }

    struct Female{

    int age;

    char name[20];

    int  aerobics;

    }

    union student{

      struct  Male m;

      struct  Female f;

    }

    int main(void){

    union student s[30];

    s[0].m.basketball = 47;

    s[1].m. aerobics  = 44;

    }

    3.枚举

    #include <stdio.h>

     enum week {

    SUN,

    MON,

    TUE,

    WEN,

    THU,

    FRI,

    SAT

    }

    int main(void){

     enum week today;

    today=SAT

    switch(today){

    case Mon:

    printf("今天星期一");

    defaut:

    printf("今天不是星期一");

    }

    }

    4.宏定义

    #define N 321

    #define PI  3.14

    #define S(r) (PI * (r) * (r))

    #define Sen_year (365 * 24 * 60 * 60)UL //把这个数转为一个 unsigned long

    宏定义必须定义在全局里

    宏定义必须先定义再使用,否则会报错

    宏定义名一般是大写(这个不是语法定义的,一般约成的)

    宏定义的式子必须用()括号括起来

    为什么使用宏定义

    在C语言中,一般使用常数时候,都是不直接使用,而是把该常数定义个宏,然后在程序中使用宏,这样的好处是,等我们需要修改这个常数时,只需要在宏定义处修改一次即可

    5.预处理

    相关文章

      网友评论

          本文标题:结构体,共用体,枚举,宏定义,预处理

          本文链接:https://www.haomeiwen.com/subject/kfxlgdtx.html