欢迎来到天天文库
浏览记录
ID:50042956
大小:206.00 KB
页数:54页
时间:2020-03-08
《C_C++程序设计基础 教学课件 作者 李凤云 第11章结构体与共用体.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第11章结构体与共用体1、结构体类型的定义2、结构体变量的定义及引用3、结构体数组4、结构体类型的指针5、链表的基本操作6、共用体和枚举类型(了解)结构体类型的引入问题:为了描述一个事物的不同属性,需要用到各种不同类型的数据,这些数据彼此相关,形成一个有机的整体。例如:一个教师的基本信息由姓名、性别、年龄、职称、工资等几项组合而成。如何描述一个教师的情况呢?前面我们已学习过各种基本类型的变量和数组,而且我们知道,各个变量之间是相互独立的,无任何联系;而数组只能用来表示一批相同类型的数据。因此,若用单个
2、变量分别表示教师的姓名、性别、年龄等属性,则难以反映他们之间的内在联系;若用数组,则根本无法表示,因为姓名、性别、年龄等不属同一种数据类型。C语言中用“结构体”来描述由多个不同类型的数据组成的数据集合。相当于其他高级语言中的“记录”.11.1结构体类型的定义与基本数据类型不同的是,结构体是又一种构造类型,是由多个类型的数据成员组合而来的。因此该类型的具体内容应根据需要先定义,后使用。可以定义如下结构体类型来描述教师的基本情况:structteacher/*struct是关键字*/{charname[3
3、0];/*{}内是该类型的各成员*/charsex;intage;charposition[10];floatsalary;};/*语句末尾是“;”*/该结构体类型名为structteacher,teacher是该结构体的标识符;该类型包含有6个成员的数据项:name、sex、age、position和salary,其中每个成员项都有自己的类型。可见,定义一种新的结构体类型的一般形式是:struct结构体类型名{成员类型成员名;……成员类型成员名;};其中,struct是关键字,结构体类型名、结构体成
4、员名的命名规则同变量的命名规则一样。特别提示:structteacher只是一种具体的结构体类型,根据需要,程序员可以定义多个不同内容的结构体类型。其中的成员项是该类型的组成部分,而不是变量。结构体类型的成员可以是基本类型的变量或数组,也可以是结构体类型的数据。即结构体类型的嵌套定义。例如,若将教师的年龄改为出生日期,则可以将出生日期定义为一个结构体类型,然后嵌入structteacher中。将出生日期单独定义为一个结构体类型后再嵌入。Structdate_type{intyear;intmonth;
5、intday;};Structteacher_2{charname[30];charsex;structdate_typebirthday;charposition[10];floatsalary;}(常用)直接嵌入。Structteacher_3{charname[30];charsex;structdate_type{intyear;intmonth;intday;}birthday;charposition[10];floatsalary;}/*成员birthday又是一个结构体类型的数据。*/
6、11.2结构体变量的定义及引用经以上定义后,结构体类型structteacher与系统定义的类型int、long、float等一样,可以用它来定义该类型的变量、数组、函数等。不同的是:结构体类型的作用范围是有限制的。在函数体内定义的结构体类型的作用域为本函数内,在函数体外定义的结构体类型的作用域为本程序文件内,若要引用不在本文件内的结构体类型,通常用#include命令将定义该类型的文件包含进来。例11.1定义一个结构体变量,用于存放一个教师的信息,然后将其输出。#include"stdio.h"ma
7、in(){structteacher/*该类型的作用范围在本函数内*/{charname[30];charsex;intage;charposition[10];floatsalary;};structteacherperson;/*定义结构体变量person*/strcpy(person.name,"wangli");person.sex=‘f’;/*给各成员赋值*/person.age=30;strcpy(person.position,"middle");person.salary=1600;p
8、rintf("namesexagepositionsalary");printf("%-10s%3c%5d%10s%8.2f",person.name,person.sex,person.age,person.position,person.salary);}分析:*本例中结构体类型在函数体内定义,其作用范围在本函数体内。*先定义结构体类型,后定义结构体变量。*对结构体变量输入输出操作、或将基本类型的数据赋给结构体变量时,需分别访问各个基本类型的
此文档下载收益归作者所有