[其它考试]第11章结构体1.ppt
《[其它考试]第11章结构体1.ppt》由会员分享,可在线阅读,更多相关《[其它考试]第11章结构体1.ppt(42页珍藏版)》请在三一文库上搜索。
1、,第十一章 结构体、联合,本章目标,1.理解结构体,联合体的数据类型,2.学会定义结构体、联合体的数据类型的变量,3.能够正确使用结构体、联合体的成员, 已了解的数据类型:,整型,浮点型,字符型,11.1 引言,数组,简单数据类型,用户定义的数据类型,特点:所有的元素都是同一种类型,存在的问题:难以处理较复杂的数据,指针型,如:建立一份学生档案,对每一个学生至少需要以下一些信息。,学号(unsigned no) 姓名(char name20) 性别(char sex) 年龄(int age),成绩(float score) 地址(char ddr30),C 程序可将上述数据的集合定义为一种结构
2、体类型:,struct student unsigned num; char name20; char sex; int age; float score; char addr30; ;,分号不能少,我们可以根据需要定义很多类似的类型,如struct goods,struct book等等。,一、结构体定义的一般形式:,11.2 结构体的定义,struct 结构体名 成员表列 ;,成员表列的写法:类型标识符 成员名; 可以是我们学过的任何类型 每一个成员也称为结构体中的域,如:struct date, int year;,int month;,int day;,;,结构体名,成员表列,域,也可
3、写成: struct date int year,month,day; ;,注意:,1.这只是定义一种新类型的方法,尚未定义变量。 struct date 是一个类型名,类似于int,2.struct 关键词(保留字),表示定义一种结构体类型。,3.一个C程序可定义多个结构体类型;定义的位置可在函数之内,也可在函数之外;位置决定有效范围; 如:结构体类型1定义; void main( ) 结构体类型2定义; ; fun1() ; ,1. 先定义结构体类型再定义结构体变量,有三种方法可用来定义结构体变量:,例: struct student int num; char sex; char nam
4、e20; float score; ;,11.2 结构体变量的定义,结构体类型,struct student x1, x2;,类型标识符,结构体变量,x1, x2为student 结构体类型的变量,x1, x2可存放student类型数据。,例:struct student int num; char name20; char sex; int age; char addr30; x1, x2;,struct 结构体名 成员表列 变量名表列;,2. 在定义结构体类型的同时定义变量:,定义形式,定义形式 struct 成员表列 变量名表列; 不出现结构体类型名 称为无名结构体,3. 直接定义结构
5、类型变量,例:struct int num; char name20; char sex; int age; char addr30; x1, x2;,1. 类型名与变量名是不同的概念。只能对变量赋值、存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间。,几点说明:,2.结构体变量占用内存情况: 各成员按定义顺序连续存储 长度是该结构体变量中所有成员占内存之和 可用sizeof运算符求出一个结构体的长度,例: struct student int num; char name20; char sex; int age; char addr30; ; struct student x1
6、; printf(“%d”,sizeof(x1);,X1 59个字节,sizeof运算符,能够求出变量或类型所占的内存字节数,例如: sizeof(int) 求int类型占内存字节数,3. 一个结构体类型的变量可以是另一个结构体的成员,struct date int m; int d; iny y; ;,struct student int num; char name20; char sex; struct date birthday; float score; char tel15; stu1, stu2;,结构体变量的初始化就是指在定义结构体变量的同时给该变量赋初值。,1 1.3 结构体
7、变量的初始化,struct student x2=2, “Li Hua “, 90;,二、定义完结构体后,定义结构变量并初始化,如:struct student, unsigned No;,char name20;,float score;, x1=1,”LiMing”,85.5;,一、定义结构体的同时定义变量并初始化,但不能这样写:,struct student, unsigned No=1;,Char name20=“Li”;,float score=88;, x;,11.4 访问结构成员,访问结构体变量实质上是引用其成员,有两种运算符可访问结构成员,. 成员运算符 - 指向运算符,成员运
8、算符(.),stu1.num 引用结构体变量stu1的num成员; stu1.name 引用stu1的name成员(字符数组名); stu1.namei 引用name成员的第i个元素; stu1.birthday.y 对最低级成员进行引用;,引用形式:结构体变量名 . 成员名 其中:成员运算符 . : 一级,自左而右;,【例】按以上定义输入 scanf(“%d“, /*成员tel的指针*/ Li Feng 021-8482500 ,【例】按以上定义输出 printf(“munber:%7dn“, stu1.num); printf(“%d,%d,%dn“, stu1.birthday.y, s
9、tu1.birthday.m, stu1.birthday.d); printf(“name:%sn“, stu1.name); 或: for(i=0; stu1.namei!=0; i+) /*数组成员输出*/ printf(“%c“, stu1.namei); 说明:. 与 运算符同为一级,自左而右运算。,注意:,1. 不能整体引用,只能对各个成员分别引用。 printf(“%d,%s,%f“,stu1); 有个特例: 结构体变量间的赋值运算 如:stu2=stu1;,2. 每一个成员的作用与普通简单变量的引用相同。,stu1.num=110234; stu1.birthday.y=198
10、1; sum=stu1.score+stu2.score; stu1.num+; /. 1级 + 2级,课堂练习,编写一个程序,首先定义一个复数数据类型,即结构类型。然后定义该类型的3个变量,任意输入两个复数存入到其中两个变量,按照复数的运算规进行加法运算,把和存入第3个变量。最后按照复数表示的格式(例如:3+4i或5-6i)把和进行输出,11.5 结构体数组 数组是同类型元素的集合;结构体数组也是同 类型元素的集合,只不过每个元素的类型均为相同 的结构体类型。 前面介绍的结构体变量可用来表示一位学生的 基本情况,要表示多个学生的基本情况时,采用结 构体数组比较方便。,1. 结构体数组的定义和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 其它考试 其它 考试 11 结构
链接地址:https://www.31doc.com/p-2002595.html