C语言基础九

九、结构体、共用体、枚举、宏定义、预处理
    1、结构体
        引入关键字:struct
        引入操作符:.
        a、为什么需要结构体?什么是结构体
                没有结构体之前在C语言中数据的组织依靠变量+数组。最初简单的时候,只需要使用基本数据类型(int、char、float、
            double)来定义单个变量,需要几个变量就定义几个。后来情况变复杂了,有时候需要很多意义相关的变量(譬如需要存储及
            运算一个班级的学生分数)这时候数组出现了。数据解决了需要很多类型相同意义相关的变量的问题。但是数组是有限制的,
            数组最大的不足在于一个数组只能存储很多个数据类型相同的变量。
                因此碰到需要封装几个类型不同的变量的时候,数组就无能为力了。譬如:【使用一个数据结构来保存学生的所有信
        息:姓名、学号、性别。】

        b、什么是结构体?
                结构体是一个集合,集合中包含了很多元素,这些元素的数据类型可以相同也可以不同。所以结构体是一种数据封装的方法。
           结构体的意义就在于,把很多数据类型不相同的变量封装在一起,组成一个大的新的数据类型。

            数据结构:把庞大复杂的数据用一定的方式组织管理起来,便于操作(查找、增加、删除等)这就叫数据结构。

        c、结构体和数组的关联:数组是一种特殊的结构体,特殊之处在于封装内的各个元素类型是相同的。结构体和数组都是对子元素
            的封装,因此定义的时候都是封装作为整体定义,但是使用的时候,都是使用封装中的子元素。一般结构体变量和数组变量都
            不会作为一个整体操作。

        d、使用结构体的步骤:
            第一步:定义结构体类型。结构体类型的定义是在主函数外面的(主函数外面 == 全局)
            第二步:使用第一步的类型来定义结构体的变量。
            第三步:使用变量实际上使用结构体变量的时候,使用的是结构体中封装的各个子元素,而不是结构体本身。

        e、结构体初始化
            结构体变量和普通变量一样,作为局部变量时,如果定义时无初始化也无显式赋值,则结构体变量中子元素的值是随机的。

            有两种C语言接受的结构体初始化方式:
                第一种:完全初始化。例:{xx,xx,xx,xx};
                第二种:部分初始化。
                            例:
                                {
                                    .a = xx,
                                    .b = xx,
                                    .c = xx,
                                    .d = xx,
                                };

    2、宏定义
        #define N (321)        //宏定义的格式

        宏定义要注意的问题:
                1、宏定义一般是在函数外面
                2、宏定义必须要先定义,再使用宏。如果先使用就会编译报错。
                3、宏定义中宏名一般用大写。不是语法规定的,是一般约定俗成的。

        为什么要使用宏定义?
                在C语言中,一般使用常数的时候,都不是直接使用,而是先把该常数定义为一个宏,然后在程序中使用该宏名。这样
            做的好处是,等我们需要修改这个常数时,只需要在宏定义出修改一次即可。而不用到代码中到处去寻找,看哪里使用过
            这个常数。

    3、枚举
        

    4、共用体(union,联合,联合体)
        引入关键字:union
            共用体union在定义和使用形式上,和结构体struct很相似。但是两种数据结构是完全不同的两类东西。
            结构体,是对多个数据的组合与封装。
            共用体,共用体中只有一个东西,只是被好几个名字(和类型)共用。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值