《高级语言程序设计教学课件》第9章.ppt
![资源得分’ 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)
《《高级语言程序设计教学课件》第9章.ppt》由会员分享,可在线阅读,更多相关《《高级语言程序设计教学课件》第9章.ppt(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第九章第九章 结构体结构体2 2学习目标学习目标n n结构体的概念结构体的概念n n结构体类型和结构体变量的差别结构体类型和结构体变量的差别n n运算符运算符“.”和和“-”n n结构体数组、结构体指针结构体数组、结构体指针3 39.1 结构体结构体n问题问题:我们要处理一个学生的信息,包括:我们要处理一个学生的信息,包括:学号、姓名、性别、年龄、成绩、地址学号、姓名、性别、年龄、成绩、地址n按照以往定义变量的方式,我们可以这样定义:按照以往定义变量的方式,我们可以这样定义:struct studentstruct student int num;int num;char name20;ch
2、ar name20;char sex;char sex;int age;int age;float score;float score;char addr50;char addr50;这些变量相互独立,这些变量相互独立,很难反映出它们的内在联系很难反映出它们的内在联系结构体结构体4 4结构类型结构类型 n n【例例】平面上点(平面上点(x,y)的表示)的表示structstruct point point float x;float x;float y;float y;(4,3)(0,0)平面上的点平面上的点关键字关键字结构体名结构体名结构体成员结构体成员5 5n定义一个结构体的一般形式为:定
3、义一个结构体的一般形式为:n注意:注意:1.结构体类型不分配空间,是一种数据类型;结构体类型不分配空间,是一种数据类型;2.结构体成员的类型可以不同结构体成员的类型可以不同structstruct 结构名结构名结构名结构名 数据类型数据类型数据类型数据类型 成员成员成员成员1;1;数据类型数据类型数据类型数据类型 成员成员成员成员n;n;6 6namenamenumnumsexsexageagescorescoreaddraddr4 4字节字节字节字节4 4字节字节字节字节2020字节字节字节字节1 1字节字节字节字节4 4字节字节字节字节5050字节字节字节字节 struct student
4、struct student int num;int num;char name20;char name20;char sex;char sex;int age;int age;float score;float score;char addr50;char addr50;结构体类型定义描述结构结构体类型定义描述结构结构体类型定义描述结构结构体类型定义描述结构的组织形式的组织形式的组织形式的组织形式,不分配内存不分配内存不分配内存不分配内存7 7【例例】定义点结构变量并保存平面点定义点结构变量并保存平面点(4,3)struct pointstruct point float x;float x
5、;float y;float y;struct pointstruct point point1point1;point1.xpoint1.x=4;=4;point1.ypoint1.y=3;=3;8 8定义结构体变量的三种形式定义结构体变量的三种形式n n形式形式1:先定义类型:先定义类型,再定义变量再定义变量struct struct 结构名结构名结构名结构名 数据类型数据类型数据类型数据类型 成员成员成员成员1 1;数据类型数据类型数据类型数据类型 成员成员成员成员n n;struct struct 结构名结构名结构名结构名 结构变量结构变量结构变量结构变量1,1,结构变量结构变量结构变
6、量结构变量2 2;struct pointstruct point float x;float y;struct pointstruct point point1,point2;9 9n n形式形式2:在定义类型时:在定义类型时,定义变量定义变量struct struct 结构名结构名结构名结构名 数据类型数据类型数据类型数据类型 成员成员成员成员1 1;数据类型数据类型数据类型数据类型 成员成员成员成员 n n;结构变量结构变量结构变量结构变量1,1,结构变量结构变量结构变量结构变量2 2;struct point float x;float y;point1,point2;1010n n形
7、式形式3:无类型名的变量定义:无类型名的变量定义注意注意注意注意第三种定义形式省略了结构名第三种定义形式省略了结构名第三种定义形式省略了结构名第三种定义形式省略了结构名,在此定义语句后面无在此定义语句后面无在此定义语句后面无在此定义语句后面无法再定义这个类型的其它结构变量法再定义这个类型的其它结构变量法再定义这个类型的其它结构变量法再定义这个类型的其它结构变量structstruct 数据类型数据类型数据类型数据类型 成员成员成员成员1 1;数据类型数据类型数据类型数据类型 成员成员成员成员 n n;结构变量结构变量结构变量结构变量1,1,结构变量结构变量结构变量结构变量2 2;struct
8、float x;float y;point1,point2;结构名结构名结构名结构名1111n说明说明结构体类型与结构体变量概念不同结构体类型与结构体变量概念不同类型类型:不分配内存不分配内存 变量变量:分配内存分配内存类型类型:不能赋值、存取、运算不能赋值、存取、运算 变量变量:可以可以结构体可嵌套结构体可嵌套结构体成员名与程序中变量名可同,不会混淆结构体成员名与程序中变量名可同,不会混淆例例例例 struct date int month;int day;int year;struct student int num;char name20;struct date birthday;str
9、uct date birthday;stu;numnamebirthdaymonthdayyear例例例例 struct student int num;char name20;struct date struct date int month;int month;int day;int day;int year;int year;birthdaybirthday;stu;例例例例 main()main()struct student int num;int num;char name20;stu;int num;int num;num=0;stu.num stu.num=1;1212【例例9
10、-1】结构变量初始化结构变量初始化#include include main()main()struct struct student student long int num;long int num;char name20;char name20;char addr20;char addr20;a=a=89031,Li Lin,123 Beijing Road;89031,Li Lin,123 Beijing Road;printf(No.:%ldnname:%snaddress:%sn,printf(No.:%ldnname:%snaddress:%sn,a.num,a.name,a.a
11、ddr);a.num,a.name,a.addr);初值表初值表初值表初值表1414结构体变量的引用结构体变量的引用n引用规则引用规则结构体变量不能整体进行输入、输出、赋值、结构体变量不能整体进行输入、输出、赋值、运算运算引用方式:引用方式:结构体变量名结构体变量名结构体变量名结构体变量名.成员名成员名成员名成员名可以将一个结构体变量赋值给另一个结构体变可以将一个结构体变量赋值给另一个结构体变可以将一个结构体变量赋值给另一个结构体变可以将一个结构体变量赋值给另一个结构体变量量量量结构体嵌套时结构体嵌套时逐级引用逐级引用逐级引用逐级引用struct studentstruct student i
12、nt num;int num;char name20;char name20;struct date struct date int month;int month;int day;int day;int year;int year;birthday;birthday;stu1,stu2;stu1,stu2;stu1.birthday.month=12;stu1.birthday.month=12;1515【例例】成员变量引用成员变量引用struct student int num;char name20;char sex;int age;float score;char addr30;stu
13、1,stu2;stu1=101,“Wan Lin”,M,19,87.5,“DaLian”;printf(“%d,%s,%c,%d,%f,%sn”,stu1);if(stu1=stu2stu1=stu2)stu1.name=“WangLin”;stu1.num=101;strcpy(stu1.name,“Wang Lin”);stu1.sex=M;Stu1.age=19;stu1.score=87.5;strcpy(stu1.addr,“DaLian”;stu2=stu1;stu2=stu1;1616【例例】分别定义表示直线和矩形的结构体分别定义表示直线和矩形的结构体struct point f
14、loat x;float y;struct line struct point startp;struct point endp;struct rect struct point pt1;struct point pt2;struct point pt3;struct point pt4;(0,0)平面上的矩形平面上的矩形pt3pt1pt2pt41717常见编程错误常见编程错误n错例错例1struct stu int no;char name10;float score;=1,“wangbin”,98;错误分析:错误分析:struct stu是结构类型,不占内存空间,不能对其赋值。是结构类型,
15、不占内存空间,不能对其赋值。1818n错例错例2struct stu int no;char name10;float score;stu s;错误分析:错误分析:1)结构体类型定义之后)结构体类型定义之后“”后必须加后必须加“;”2)结构体类型名为)结构体类型名为struct stu,不是,不是stu;申明变量应为:申明变量应为:struct stu s;1919n错例错例3struct stuint no;char name10;float score;struct stu s;scanf(“%d%s%f”,s);错误分析:不能整体读入结构体变量值,错误分析:不能整体读入结构体变量值,应为
16、应为 scanf(“%d%s%f”,&s.no,s.name,&s.score);2020n错例错例4struct stuint no;char name10;float score;struct stu s,*p;scanf(“%d%s%f”,&p.no,&p.name,&p.score);错误分析:错误分析:1)p是结构指针变量,使用之前应赋初值;是结构指针变量,使用之前应赋初值;2)p访问成员的方式应为访问成员的方式应为p-no,p-name,p-score;3)p-name为数组名,读入一个字符串时,前面不能加为数组名,读入一个字符串时,前面不能加“&”。21219.2 结构变量作为函
17、数参数结构变量作为函数参数【例例9-2】平面上两点之间的距离平面上两点之间的距离(x(x1 1,y,y1 1)(x(x2 2,y,y2 2)2222#include#include struct point float x;float y;float GetDis(struct point,struct point);2323main()struct point pt1,pt2;printf(Please input pt1:);scanf(%f%f,&pt1.x&pt1.x,&pt1.y&pt1.y);printf(Please input pt2:);scanf(%f%f,&pt2.x,&
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级语言程序设计教学课件 高级 语言程序设计 教学 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内