C语言新教材PPT课堂课件-8-结构枚举等.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C语言新教材PPT课堂课件-8-结构枚举等.pdf》由会员分享,可在线阅读,更多相关《C语言新教材PPT课堂课件-8-结构枚举等.pdf(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第第八八章章 用用户户自自定定义义数数据据类类型型8.1 8.1 结结构构类类型型及及其其变变量量的的定定义义8.2 8.2 结结构构数数组组8.3 8.3 结结构构和和指指针针8.4 8.4 联联合合类类型型8.5 8.5 枚枚举举类类型型8.6 8.6 用用typedeftypedef 定定义义类类型型别别名名补补: 编编译译预预处处理理28.1 8.1 结结构构类类型型及及其其变变量量的的定定义义l数数组组是是一一种种存存放放一一组组相相关关的的同同类类型型数数据据的的构构造造类类型型,但但是是不不能能将将不不同同类类型型的的数数据据放放入入同同一一数数组组中中。l如如果果需需要要把把
2、一一个个学学生生的的学学号号、姓姓名名、性性别别、年年龄龄、成成绩绩等等不不同同类类型型的的数数据据作作为为一一个个有有机机的的整整体体,就就需需要要一一种种新新的的构构造造类类型型结结构构类类型型。l结结构构类类型型变变量量中中的的各各个个数数据据项项各各自自独独立立存存放放。3l结结构构类类型型需需要要自自定定义义,先先定定义义结结构构类类型型后后,再再定定义义结结构构变变量量。l结结构构类类型型定定义义包包含含:各各个个成成员员的的名名称称、类类型型。l结结构构变变量量定定义义包包含含:结结构构类类型型、结结构构体体变变量量名名称称。48.1.1 结结构构类类型型的的定定义义一一般般格格
3、式式: struct 结结构构类类型型名名 类类型型 成成员员1; 类类型型 成成员员2; 类类型型 成成员员n; ;例例8.1: struct Student int number; char name9; int age; char sex; ;l定定义义结结构构类类型型,系系统统是是不不会会为为之之分分配配内内存存单单元元。只只有有在在定定义义了了结结构构变变量量后后,系系统统才才会会分分配配内内存存单单元元给给变变量量。l成成员员名名可可以以与与程程序序中中其其它它变变量量同同名名,二二者者不不代代表表同同一一对对象象,但但为为增增强强可可读读性性,不不提提倡倡这这样样做做。 * st
4、ruct Student int number; char name9; struct Birthday int year; int month; int day; birthday; char sex; ;例例8.28.2:l成成员员也也可可以以是是一一个个结结构构变变量量。l可可以以用用sizeofsizeof运运算算符符计计算算结结构构类类型型的的长长度度。sizeof(struct Student)的的值值是是18numbername9birthdaysex 2 9 6 1 68.1.2 结结构构变变量量的的定定义义 (1)先先定定义义结结构构类类型型,再再定定义义结结构构变变量量st
5、ruct Student int number; char name9; int age; char sex;struct Student student1;结结构构类类型型只只是是模模型型,结结构构变变量量才才是是可可操操作作的的实实体体应应区区分分结结构构类类型型名名与与结结构构变变量量名名。三三种种方方式式7(2)(2)在在定定义义结结构构类类型型的的同同时时定定义义结结构构变变量量 struct Student int number; char name9; int age; char sex; student1;结结构构变变量量的的定定义义(3)(3)定定义义结结构构类类型型但但不不
6、命命名名, ,同同时时定定义义结结构构变变量量struct int number; char name9; int age; char sex; student1;无无名名结结构构体体8结结构构变变量量的的初初始始化化 struct Student int number; char name9; struct int year; int month; int day; birthday; char sex; student1=1101,lilin, 1985, 8, 1, M ;birthday各成员的初值 如如:98.1.3 8.1.3 结结构构成成员员的的引引用用引引用用结结构构成成员员的
7、的一一般般形形式式如如下下:结结构构变变量量名名. 成成员员名名 例例如如:struct Student int number; char name9; int age; char sex; student1;各各成成员员的的引引用用: student1.number,student1.name, student1.age,student1.sex成成员员运运算算符符: : . . 功功能能: : 访访问问结结构构体体变变量量中中指指定定的的成成员员优优先先级级1 1,左左结结合合性性不不能能用用 Student.numberStudent.number 等等10允允许许对对结结构构变变量量进
8、进行行整整体体赋赋值值操操作作。 如如: student2= student1; student1、student2为为类类型型相相同同的的结结构构体体变变量量不不允允许许将将一一组组常常量量直直接接赋赋给给一一个个结结构构变变量量。如如: student2=1101, lilin, 1985,8,1, M; 错错误误!不不允允许许对对结结构构变变量量进进行行整整体体输输入入输输出出,而而只只能能对对结结构构变变量量中中各各个个成成员员分分别别进进行行输输入入输输出出。如如:printf(, student1); 错错误误!结结构构变变量量引引用用注注意意事事项项11如如果果成成员员本本身身又
9、又是是一一个个结结构构,欲欲对对最最后后一一级级成成员员进进行行访访问问,必必须须通通过过多多级级成成员员运运算算符符。 如如: student1.birthday.year结结构构变变量量的的成成员员其其作作用用和和地地位位相相当当于于普普通通变变量量,可可以以像像普普通通变变量量一一样样进进行行各各种种运运算算。可可以以引引用用成成员员的的地地址址,也也可可以以引引用用结结构构变变量量的的地地址址。如如: &student1表表示示结结构构变变量量student1的的首首地地址址 &student1.age 表表示示结结构构变变量量student1的的成成员员age的的地地址址结结构构变变
10、量量引引用用注注意意事事项项12 结结构构类类型型定定义义:struct Employee long code; char name20; float salary; char address50; char phone11;例例8.4 职职工工数数据据包包括括职职工工编编号号、姓姓名名、工工资资、地地址址、电电话话,定定义义职职工工类类型型并并用用它它来来声声明明职职工工变变量量,然然后后访访问问其其各各个个成成员员。 举举例例1 结结构构类类型型及及变变量量定定义义、成成员员访访问问13用用2个个结结构构变变量量存存放放2个个职职工工记记录录:#include #include void
11、main() struct Employee ps1=123,chen,2000.0, 泉泉州州,2699999, ps2; /*/*以以下下给给结结构构变变量量ps2各各成成员员输输入入值值或或赋赋值值* */ / printf (code: ); scanf (%ld,&ps2.code); printf (name: ); scanf (%s, ps2.name); printf (phone: ); scanf (%s, ps2.phone); strcpy(ps2.address, ps1.address); ps2.salary=ps1.salary*1.5;可可改改用用:getc
12、har();gets(ps2.name); getchargetchar() () 用用来来“吃吃掉掉”作作为为codecode输输入入结结束束符符的的回回车车键键;getsgets函函数数可可输输入入含含空空格格的的姓姓名名。14/*/*以以下下输输出出结结构构变变量量ps1、ps2各各成成员员的的值值* */ / printf (ncode:%ldn, ps1.code); printf (name:%s=n, ps1.name); printf (salary:%6.2fn, ps1.salary); printf (address:%sn,ps1.address); printf (p
13、hone:%sn,ps1.phone); printf (ncode:%ldn,ps2.code); printf (name:%sn,ps2.name); printf (salary:%6.2fn,ps2.salary); printf (address:%sn,ps2.address); printf (phone:%sn,ps2.phone);15举举例例2 结结构构类类型型及及变变量量定定义义、成成员员访访问问#include void main() struct Student int number; char name9; struct Birthday int year; in
14、t month; int day; birthday; char sex; s;numbername9birthdaysexs scanf (%d,&s.number); scanf (%s, s.name); scanf (%d-%d-%d, &s.birthday.year, &s.birthday.month, &s.birthday.day); scanf ( %c,&s.sex); printf (%d,%s, %d-%d-%d, %cn, s.number, s.name, s.birthday.year, s.birthday.month, s.birthday.day, s.s
15、ex); 168.2 8.2 结结构构数数组组如如:方方式式(2)(2)struct Student int number; char name20; struct int year; int month; int day; birthday; char sex; student2= 1101,lilin,1985,8,1, M, 1102,wangjing,1985,7,1,F ;结结构构数数组组初初始始化化 结结构构数数组组的的定定义义也也有有三三种种方方式式student0numbername9birthdaystudent1sex17结结构构数数组组应应用用举举例例例例8.5 计计算算
16、学学生生的的平平均均年年龄龄 #include struct Student int number; char name20; int age; stu4;void main ( ) int i; float ave,s=0; for (i=0;i4;i+) scanf(%d%s%d,&stui.number,stui.name, &stui.age); for (i=0; i 成成员员名名二二、通通过过指指针针引引用用结结构构变变量量成成员员 +pman-name 等等同同于于 +(pman-name)*pman-name 等等同同于于 *(pman-name)指指向向运运算算符符: - 功
17、功能能: 对对指指针针所所指指向向的的结结构构的的成成员员进进行行访访问问优优先先级级1 1,左左结结合合性性20举举例例 用用结结构构指指针针间间接接访访问问结结构构变变量量成成员员#include #include struct Student long num; char name20; int age; ; void main ( ) struct Student student,*p=&student; strcpy(p-name, Wang Li); p-num=89101; p-age=18; printf(name: %snnumber:%ldnage:%dn, (*p).na
18、me, (*p).num, (*p).age ); 类类例例8.7 *类类例例8.98.9 学学生生类类型型结结构构数数组组中中存存放放若若干干学学生生的的数数据据,通通过过结结构构指指针针输输出出各各个个学学生生的的数数据据。举举例例 用用结结构构指指针针间间接接访访问问结结构构数数组组元元素素的的成成员员#include struct Student int number; char name20; int age; ; void main() struct Student stu2=10101,li lin,18, 10102,zhang fan,19; struct Student *
19、p; printf(No. Name agen); for (p=stu; pnumber,p-name,p-age); p+后后,p指指向向下下一一个个结结构构数数组组元元素素 *三三、指指针针变变量量作作为为结结构构成成员员输输出出:lililili例8.8#include struct Student int number; char *name; /*成员name为指针变量*/; void main() struct Student stu=1101,lili; puts( stu.name ); 如如果果没没有有给给结结构构变变量量stustu初初始始化化,而而是是通通过过scanf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 新教材 PPT 课堂 课件 结构 枚举
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内