文档详情

第7章C语言结构体与共用体研究.ppt

发布:2017-01-04约2.5万字共132页下载文档
文本预览下载声明
  本章主要介绍C语言中的结构体和共用体两种构造数据类型,同时介绍了枚举类型及如何用typedef定义类型。   学习重点:   ? ?结构体类型与结构体变量   ? ?共用体类型与共用体变量   ? ?枚举类型与枚举变量    7.1.1 结构体的引入   前面的课程我们学习了一些简单数据类型(整型、实型、字符型)的定义和应用,还学习了数组(一维、二维)的定义和应用,这些数据类型的特点是:当定义某一特定数据类型时,就限定该类型变量的存储特性和取值范围。对简单数据类型来说,既可以定义单个的变量,也可以定义数组。而数组的全部元素都具有相同的数据类型,或者说是相同数据类型的一个集合。   在日常生活中,我们常会遇到一些需要填写的登记表,如住宿表、成绩表、通讯地址表等。在这些表中,填写的数据是不能用同一种数据类型描述的。在住宿表中我们通常会登记上姓名、性别、身份证号码等项目;在通讯地址表中我们会写下姓名、邮编、邮箱地址、电话号码、E-mail等项目。这些表中集合了多种数据,无法用前面学过的任一种数据类型完全描述,因此C语言引入了一种能集中不同数据类型于一体的数据类型——结构体类型。 7.1.2 结构体类型的定义   在上面描述的各种登记表中,让我们仔细观察一下住宿表、成绩表、通讯地址表等。   住宿表由下面的项目构成: 成绩表由下面的项目构成: 通讯地址表由下面的项目构成: 这些登记表用C语言提供的结构体类型描述如下:   住宿表:   struct accommod   {    char name[20]; /*姓名*/    char sex; /*性别*/    char job[40]; /*职业*/    int age; /*年龄*/    long number; /*身份证号码*/   };   成绩表:   struct score   {    char grade[20]; /*班级*/    long number; /*学号*/    char name[20]; /*姓名*/    float os; /*操作系统*/    float datastru; /*数据结构*/    float compnet; /*计算机网络*/   };   通讯地址表:   struct addr   {    char name[20];    char department[30]; /*部门*/    char address[30]; /*住址*/    long box; /*邮编*/    long phone; /*电话号码*/    char email[30]; /* E-mail*/   };   这一系列对不同登记表数据结构的描述类型称为结构体类型。可以看出结构体类型属于构造数据类型。   结构体与数组类似,都是由若干分量组成的。数组是由相同类型的数组元素组成,而结构体的分量可以是不同类型的。?结构体中的分量称为结构体的成员。访问数组中的分量(元素)是通过数组的下标,而访问结构体中的成员是通过成员的名字。   在程序中使用结构体之前,首先要对结构体的组成进行描述,称为结构体的定义。结构体的定义说明了该结构体的组成成员,以及每个成员的数据类型。结构体定义的一般形式如下:   struct 结构体名   {    类型说明符 成员名1;    类型说明符 成员名2;    …    类型说明符 成员名n;   };   其中,关键字“struct”是结构体的标识符;“结构体名”是所定义的结构体的类型说明符,属于标识符,由用户自己定义;“{}”中包围的是组成该结构体的成员, 每个成员的数据类型既可以是简单的数据类型,也可以是复杂的构造数据类型。整个定义用分号结束,是一个完整的语句。   结构体名是可以省略的,此时定义的结构体称为无名结构体。    7.2.1 结构体变量的定义   定义一个结构体类型只是描述了此结构体的组织形式,在编译时并不为其分配存储空间,故不能对它进行赋值、存取或运算。为了能在程序中使用结构体类型的数据,应当定义结构体变量,并在其中存放具体的数据。   定义结构体变量有以下三种方式:   (1) 先定义结构体类型再定义变量。   例如:   struct student   {    int num;
显示全部
相似文档