清华谭浩强C语言教学-第11章 结构体与共用体ppt课件_第1页
清华谭浩强C语言教学-第11章 结构体与共用体ppt课件_第2页
清华谭浩强C语言教学-第11章 结构体与共用体ppt课件_第3页
清华谭浩强C语言教学-第11章 结构体与共用体ppt课件_第4页
清华谭浩强C语言教学-第11章 结构体与共用体ppt课件_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十一章11.1 概述 C语言程序中少量变化的数据用变量来处理。数量不宜多。 批量同类型数据的处理用数组。 不同类型的数据的集合用什么数据结构来存放呢?这就是本单元要介绍的内容:用结构体类型处理不同类型数据的集合。结构体名类型名成员名 声明一个结构体类型的一般形式为: struct 结构体名 成员表列;如: struct student int num;char name20;char sex; int age;float score;char addr30; ;(1间接定义法先定义结构类型、再定义结构变量例如,定义的学生信息结构类型std_info,定义了一个相应的结构变量student:

2、struct std_info student;结构变量student:拥有结构类型的全部成员,其中birthday成员是一个日期结构类型,它又由3个成员构成。注意:使用间接定义法定义结构变量时,必须同时指定结构类型名。 11.2 定义结构体类型变量的方法(2直接定义法在定义结构类型的同时,定义结构变量例如,结构变量student的定义可以改为如下形式:struct std_info student;同时定义结构类型及其结构变量的一般格式如下: struct 结构类型名 结构变量表;2.说明(1结构类型与结构变量是两个不同的概念,其区别如同int类型与int型变量的区别一样。(2结构类型中的成

3、员名,可以与程序中的变量同名,它们代表不同的对象,互不干扰。(3)“结构类型名和“数据项的命名规则,与变量名相同。(4数据类型相同的数据项,既可逐个、逐行分别定义,也可合并成一行定义。 例如,本案例代码中的日期结构类型,也可改为如下形式: struct date int year, month, day; ;(5结构类型中的数据项,既可以是基本数据类型,也允许是另一个已经定义的结构类型。 例如,P284(6本书将个数据项称为结构类型的个成员或分量)。 11.3结构体变量的引用 在定义了结构体变量以后,当然可以引用这个变量。但应遵守以下规则: (1)不能将一个结构体变量作为一个整体进行输入和输出

4、。例如: 已定义student1和student2为结构体变量并且它们已有值。printf(%d,%s,%c,%d,%f,%n,student1); 引用结构体变量中成员的方式为 结构体变量名.成员名 例如, student1.num表示student1变量中的num成员,即student1的num(学号)项。可以对变量的成员赋值,例如:student1.num=10010;“.”是成员(分量)运算符,它在所有的运算符中优先级最高,因此可以把student1.num作为一个整体来看待。上面赋值语句的作用是将整数10010赋给student1变量中的成员num。 可以引用结构体变量成员的地址,也

5、可以引用结构体变量的地址。例如: scanf(%d,&student1.num); (输入student1.num的值) printf(%o,student1); (输出student1的首地址)但不能用以下语句整体读入结构体变量,例如: scanf(%d,s,c,d,f,s,student1); 结构体变量的地址主要用作函数参数,传递结构体变量的地址。 11.4 结构变量的初始化结构变量初始化的格式,与一维数组相似: 结构变量=初值表不同的是:如果某成员本身又是结构类型,则该成员的初值为一个初值表。例如,student=000102, 张三, 男, 1980,9,20。注意:初值的数

6、据类型,应与结构变量中相应成员所要求的一致,否则会出错。 11.5 结构体数组 一个结构体变量中可以存放一组数据如一个学生的学号、姓名、成绩等数据)。如果有个学生的数据需要参加运算,显然应该用数组,这就是结构体数组。结构体数组与以前介绍过的数值型数组不同之处在于每个数组元素都是一个结构体类型的数据,它们都分别包括各个成员分量项。 与结构变量的定义相似,结构数组的定义也分直接定义和间接定义两种方法,只需说明为数组即可。 与普通数组一样,结构数组也可在定义时进行初始化。初始化的格式为:结构数组n初值表1,初值表2,.,初值表n11.5.3 结构体数组应用举例结构体数组应用举例 例例11.2对候选人

7、得票的统计程序。设有对候选人得票的统计程序。设有3个个候选人,每次输入一个得票的候选人的名候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。字,要求最后输出各人得票结果。#include #include struct person char name20;in count; ;leader3=“Li”,0, “ Zhang”,0, “ Fun”,0 11.6 指向结构体类型数据的指针 一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。通过指向结构变量的指针来访问结构变量的成员,与直接使用结构变量的效果一样。一般地说,如果指针变量pointer已指向结构变量var,则以下三种形式等价:(1var.成员(2pointer-成员(3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论