计算机二级第10讲精选PPT.ppt
《计算机二级第10讲精选PPT.ppt》由会员分享,可在线阅读,更多相关《计算机二级第10讲精选PPT.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机二级第10讲第1页,此课件共38页哦10.1 结构类型与结构变量的定义结构类型与结构变量的定义10.1.1 10.1.1 结构类型定义结构类型定义结构类型定义结构类型定义struct 结构类型名结构类型名 /*struct是结构类型关键字是结构类型关键字*/数据类型数据类型 数据项数据项1;数据类型数据类型 数据项数据项2;数据类型数据类型 数据项数据项;/*此行分号不能少!此行分号不能少!*/案例案例10.1 定义一个反映学生基本情况的结构类型,用以存储学生的相定义一个反映学生基本情况的结构类型,用以存储学生的相关信息。关信息。/*案例代码文件名:案例代码文件名:AL10_1.C。*/
2、*功能:定义一个反映学生基本情况的结构类型功能:定义一个反映学生基本情况的结构类型*/第2页,此课件共38页哦struct date /*日期结构类型:由年、月、日三项组成日期结构类型:由年、月、日三项组成*/int year;int month;int day;struct std_info/*学生信息结构类型:由学号、姓名、性别和生日共学生信息结构类型:由学号、姓名、性别和生日共4项组成项组成*/char no7;char name9;char sex3;struct date birthday;struct score/*成绩结构类型:由学号和三门成绩共成绩结构类型:由学号和三门成绩共4
3、项组成项组成*/char no7;int score1;int score2;int score3;第3页,此课件共38页哦(1)“结构类型名结构类型名”和和“数据项数据项”的命名规则,与变量名相同。的命名规则,与变量名相同。(2)数数据据类类型型相相同同的的数数据据项项,既既可可逐逐个个、逐逐行行分分别别定定义义,也也可可合合并并成一行定义。成一行定义。例如,本案例代码中的日期结构类型,也可改为如下形式:例如,本案例代码中的日期结构类型,也可改为如下形式:struct date int year,month,day;(3)结结构构类类型型中中的的数数据据项项,既既可可以以是是基基本本数数据据
4、类类型型,也也允允许许是是另另一一个个已经定义的结构类型。已经定义的结构类型。例例如如,本本案案例例代代码码中中的的结结构构类类型型std_info,其其数数据据项项“birthday”就就是是一一个个已经定义的日期结构类型已经定义的日期结构类型date。(4)本书将个)本书将个数据项数据项称为结构类型的个称为结构类型的个成员成员(或(或分量分量)。)。第4页,此课件共38页哦10.1.2 结构变量定义结构变量定义用用户户自自己己定定义义的的结结构构类类型型,与与系系统统定定义义的的标标准准类类型型(int、char等等)一一样样,可可用来定义结构变量的类型。用来定义结构变量的类型。1.定义结
5、构变量的方法,可概括为两种:定义结构变量的方法,可概括为两种:(1)间接定义法间接定义法先定义结构类型、再定义结构变量先定义结构类型、再定义结构变量例例如如,利利用用案案例例10.1中中定定义义的的学学生生信信息息结结构构类类型型std_info,定定义义了了一一个个相相应的结构变量应的结构变量student:struct std_info student;结结构构变变量量student:拥拥有有结结构构类类型型的的全全部部成成员员,其其中中birthday成成员员是是一一个个日日期结构类型,它又由期结构类型,它又由3个成员构成。个成员构成。注意:使用间接定义法定义结构变量时,必须同时指定结构
6、类型名。注意:使用间接定义法定义结构变量时,必须同时指定结构类型名。第5页,此课件共38页哦(2)直接定义法直接定义法在定义结构类型的同时,定义结构变量在定义结构类型的同时,定义结构变量例如,结构变量例如,结构变量student的定义可以改为如下形式:的定义可以改为如下形式:struct std_info student;同时定义结构类型及其结构变量的一般格式如下:同时定义结构类型及其结构变量的一般格式如下:struct 结构类型名结构类型名 结构变量表;结构变量表;2.说明说明(1)结结构构类类型型与与结结构构变变量量是是两两个个不不同同的的概概念念,其其区区别别如如同同int类类型型与与i
7、nt型变量的区别一样。型变量的区别一样。(2)结结构构类类型型中中的的成成员员名名,可可以以与与程程序序中中的的变变量量同同名名,它它们们代代表表不同的对象,互不干扰。不同的对象,互不干扰。Return第6页,此课件共38页哦10.2 结构变量的引用与初始化结构变量的引用与初始化案例案例10.2 利用利用案例案例10.1中定义的结构类型中定义的结构类型struct std_info,定义一个结,定义一个结构变量构变量student,用于存储和显示一个学生的基本情况。,用于存储和显示一个学生的基本情况。#include#include struct.h/*定义并初始化一个外部结构变量定义并初始化
8、一个外部结构变量student*/struct std_info student=000102,张三张三,男男,1980,9,20;main()printf(No:%sn,student.no);printf(Name:%sn,student.name);printf(Sex:%sn,student.sex);printf(Birthday:%d-%d-%dn,student.birthday.year,student.birthday.month,student.birthday.day);第7页,此课件共38页哦程序运行结果:程序运行结果:No:000102Name:张三张三Sex:男男B
9、irthday:1980-9-20 1.结构变量的引用规则结构变量的引用规则对对于于结结构构变变量量,要要通通过过成成员员运运算算符符“.”,逐逐个个访访问问其其成成员员,且且访访问问的的格格式为:式为:结构变量结构变量.成员成员 /*其中的其中的“.”是成员运算符是成员运算符*/例例 如如,案案 例例 中中 的的student.no,引引 用用 结结 构构 变变 量量student中中 的的no成成 员员;student.name引用结构变量引用结构变量student中的中的name成员,等等。成员,等等。第8页,此课件共38页哦如如果果某某成成员员本本身身又又是是一一个个结结构构类类型型,
10、则则只只能能通通过过多多级级的的分分量量运运算算,对对最最低低一一级的成员进行引用。级的成员进行引用。此时的引用格式扩展为:此时的引用格式扩展为:结构变量结构变量.成员成员.子成员子成员.最低最低1级子成员级子成员例如,引用结构变量例如,引用结构变量student中的中的birthday成员的格式分别为:成员的格式分别为:student.birthday.yearstudent.birthday.monthstudent.birthday.day(1)对最低一级成员,可像同类型的普通变量一样,进行相应的各种运算。对最低一级成员,可像同类型的普通变量一样,进行相应的各种运算。(2)既可引用结构变
11、量成员的地址,也可引用结构变量的地址。既可引用结构变量成员的地址,也可引用结构变量的地址。例如,例如,&student.name,&student。第9页,此课件共38页哦2.结构变量的初始化结构变量的初始化结构变量初始化的格式,与一维数组相似:结构变量初始化的格式,与一维数组相似:结构变量结构变量=初值表初值表不同的是:如果某成员本身又是结构类型,则该成员的初值为一个初值表。不同的是:如果某成员本身又是结构类型,则该成员的初值为一个初值表。例如,例如,案例案例10.2中的中的struct std_info student=000102,张三张三,男男,1980,9,20;注注意意:初初值值的
12、的数数据据类类型型,应应与与结结构构变变量量中中相相应应成成员员所所要要求求的的一一致致,否否则则会会出出错。错。Return第10页,此课件共38页哦10.3 结构数组结构数组 结构数组的每一个元素,都是结构类型数据,均包含结构类型的所结构数组的每一个元素,都是结构类型数据,均包含结构类型的所有成员。有成员。案例案例10.3 利用利用案例案例10.1中定义的结构类型中定义的结构类型struct std_info,定义一个结构,定义一个结构数组数组student,用于存储和显示三个学生的基本情况。,用于存储和显示三个学生的基本情况。/*案例代码文件名:案例代码文件名:AL10_3.C*/#in
13、clude#include struct.h/*定义并初始化一个外部结构数组定义并初始化一个外部结构数组student3*/struct std_info student3=“000102”,“张三张三”,“男男”,1980,9,20,“000105”,“李四李四”,“男男”,1980,8,15,“000112”,“王五王五”,“女女”,1980,3,10 ;第11页,此课件共38页哦/*主函数主函数main()*/main()int i;/*打印表头打印表头:表示表示1个空格字符个空格字符*/printf(No.NameSexBirthdayn);/*输出三个学生的基本情况输出三个学生的基本
14、情况*/for(i=0;ino);printf(Name:%sn,p_std-name);printf(Sex:%sn,p_std-sex);printf(Birthday:%d-%d-%dn,p_std-birthday.year,p_std-birthday.month,p_std-birthday.day);第14页,此课件共38页哦通通过过指指向向结结构构变变量量的的指指针针来来访访问问结结构构变变量量的的成成员员,与与直直接接使使用用结结构构变变量量的的效效果果一一样样。一一般般地地说说,如如果果指指针针变变量量pointer已已指指向向结结构构变变量量var,则则以以下下三种形式等
15、价:三种形式等价:(1)var.成员成员(2)pointer-成员成员(3)(*pointer).成员成员 /*“*pointer”外面的括号不能省!外面的括号不能省!*/注注意意:在在格格式式(1)中中,分分量量运运算算符符左左侧侧的的运运算算对对象象,只只能能是是结结构构变变量量,;而而在在格格式式(2)中中,指指向向运运算算符符左左侧侧的的运运算算对对象象,只只能能是是指指向向结结构构变变量量(或或结构数组)的指针变量,否则都出错。结构数组)的指针变量,否则都出错。思思考考题题:如如果果要要求求从从键键盘盘上上输输入入结结构构变变量量student的的各各成成员员数数据据,如如何何修修改
16、改程序?程序?AL10_4A.C第15页,此课件共38页哦10.4.2 指向结构数组的指针指向结构数组的指针案例案例10.5 使用指向结构数组的指针来访问结构数组。使用指向结构数组的指针来访问结构数组。/*案例代码文件名:案例代码文件名:AL10_5.C*/#includestruct.h/*定义并初始化一个外部结构数组定义并初始化一个外部结构数组student*/struct std_info student3=000102,张三张三,男男,1980,5,20,000105,李四李四,男男,1980,8,15,“000112”,“王五王五”,“女女”,1980,3,10;main()stru
17、ct std_info *p_std=student;int i=0;/*打印表头打印表头*/printf(No.NameSexBirthdayn);第16页,此课件共38页哦/*输出结构数组内容输出结构数组内容*/for(;ino,p_std-name,p_std-sex);printf(%4d-%2d-%2dn,p_std-birthday.year,p_std-birthday.month,p_std-birthday.day);程序演示程序演示如如果果指指针针变变量量p已已指指向向某某结结构构数数组组,则则p+1指指向向结结构构数数组组的的下下一一个个元元素素,而不是当前元素的下一个成
18、员。而不是当前元素的下一个成员。另另外外,如如果果指指针针变变量量p已已经经指指向向一一个个结结构构变变量量(或或结结构构数数组组),就就不不能能再再使之指向结构变量(或结构数组元素)的某一成员。使之指向结构变量(或结构数组元素)的某一成员。第17页,此课件共38页哦10.4.3 指向结构数据的指针作函数参数指向结构数据的指针作函数参数案案例例10.6 用用函函数数调调用用方方式式,改改写写案案例例10.5:编编写写一一个个专专门门的的显显示示函函数数display(),通过主函数调用来实现显示。,通过主函数调用来实现显示。/*案例代码文件名:案例代码文件名:AL10_6.C*/#includ
19、estruct.h/*定义并初始化一个外部结构数组定义并初始化一个外部结构数组student*/struct std_info student3=000102,张三张三,男男,1980,5,20,000105,李四李四,男男,1980,8,15,“000112”,“王五王五”,“女女”,1980,3,10;/*主函数主函数main()*/main()void display();/*函数说明函数说明*/int i=0;/*打印表头打印表头*/printf(No.NameSexBirthdayn);第18页,此课件共38页哦/*打印内容打印内容*/for(;ino,p_std-name,p_st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 10 精选 PPT
限制150内