• 结构体与联合


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

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

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


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

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

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

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


    新增关键字: struct
    新增操作符: .

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


    char -128 ~ 127
    int -xxxx ~ + xxxx

    新增关键字:union

  • 相关阅读:
    ICMP协议
    观察者模式-Observer
    模板方法模式-Template Method
    Java的演变过程
    汉诺塔-Hanoi
    外观模式-Facade
    JDK5-增强for循环
    JDK5-可变参数
    动态代理与AOP
    代理模式-Proxy
  • 原文地址:https://www.cnblogs.com/PengfeiSong/p/6122696.html
Copyright © 2020-2023  润新知