欢迎来到天天文库
浏览记录
ID:50019998
大小:1.62 MB
页数:95页
时间:2020-03-07
《C语言程序设计 教学课件 作者 姜海涛《C语言程序设计》第九章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第九章结构体与共用体主要内容结构体1结构体数组2结构体类型指针3结构体与函数4链表5共用体6本章要点结构体类型定义、结构体变量定义及使用结构体数组结构体指针结构体与函数链表共用体本章学习目标掌握结构体类型定义、结构体变量定义、成员引用、初始化方法掌握用指针操作结构体和结构体数组的方法理解结构体在函数参数传递中的应用理解存储空间的动态分配与回收理解链表的概念、掌握链表的基本操作理解共用体的含义、掌握共用体的使用9.1应用实例设计超市购物系统,需要把超市内的各种商品的信息存储起来以备查询,每种商品都有多种信息——商品编号、商品名
2、称、商品单价等。如果把每个商品的多种信息分别存放在一些变量中,那变量数目会很多且不好管理。这时我们就需要把这些不同类型的信息组合在一个有机的整体中,以便于操作。结构体类型数据就可以满足这种需要。9.1.1结构体类型的定义C语言没有提供结构体类型,而是提供了结构体类型的定义方法,我们在使用时需要自己定义。struct结构体名{结构体成员列表};在定义结构体成员列表时,成员的定义形式为:类型名成员名;9.1.1结构体类型的定义(续)我们定义一个描述商品信息的结构体类型。structgoods{intnumber;charname[
3、10];floatprice;};structgoods就是结构体类型名该结构体类型包含三个成员9.1.2结构体变量的定义(1)使用结构体类型名定义变量structgoods{intnumber;charname[10];floatprice;};structgoodsg1,g2;结构体变量的定义(续)各成员按定义顺序依次存放,成员的存储空间是相邻的。成员number是整型,占4个字节;成员name是字符型数组,占10个字节成员price是实型,占4个字节;变量g1和g2各占18个字节存储空间。numbernamepriceg
4、1结构体变量的定义(续)(2)定义结构体类型的同时定义变量structgoods{intnumber;charname[10];floatprice;}g1,g2;结构体变量g1和g2的定义直接跟在结构体类型structgoods的定义之后。结构体变量的定义(续)(3)直接定义结构体类型变量struct{intnumber;charname[10];floatprice;}g1,g2;在这种定义方式下,没有给该结构体类型命名,因此无法在其他位置定义该结构体类型的变量,也无法将它们用作函数参数。结构体变量的定义(续)(4)使用t
5、ypedeftypedef可为一个已存在的数据类型定义一个类型名。typedefintinteger;为int类型指定一个新的类型名integer。typedeffloatreal;为float类型指定一个新的类型名real。integera,b;/*a,b为int类型变量*/realc,d;/*c,d为float类型变量*/注意:typedef并不引入一个新的数据类型,只是给已定义的数据类型指定一个同义词。结构体变量的定义(续)typedefstructgoods{intnumber;charname[10];floatpr
6、ice;}kind;为结构体类型structgoods起了一个新的名字kind。结构体变量的定义(续)注意:这里的kind不是结构体变量,而是structgoods的别名。既可以使用structgoods去定义结构体变量,也可以使用kind去定义结构体变量。比如:structgoodsg1;kindg2;9.1.3结构体变量的使用在定义了结构体变量后,访问结构体各成员的语法格式为:结构体变量名.成员名结构体变量的成员可以像普通变量一样进行各种运算和操作。例如:g1.number=10446;strcpy(g1.name,“ap
7、ple”)g1.price=1.8;printf(“%d,%s”,g1.number,g1.name);scanf(“%f”,&g1.price);结构体变量的使用(续)结构体变量不能作为一个整体进行输入输出等运算操作。printf(“%d,%s,%f”,g1);/*这样是错误的*/结构体变量初始化结构体变量可以在定义的时候赋予初始值structgoods{intnumber;charname[10];floatprice;}g1={10446,“apple”,1.8};初始值用一对大括号括起来,并且必须按照结构体类型定义中成
8、员的排列顺序依次给出每个初始值。实例【例9-1】从键盘读入一种商品的编号,名称和价格信息,如果输入的商品名称是“apple”,则价格打8折。最后输出打折后的信息。voidmain(){structgoods{intnumber;charname[10];floatprice;
此文档下载收益归作者所有