第十一章结构体与共用体链表优秀PPT.ppt
《第十一章结构体与共用体链表优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第十一章结构体与共用体链表优秀PPT.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第十一章 结构体与共用体链表第一页,本课件共有38页例例题题1:某某学学生生,姓姓名名是是Li,学学号号是是9800,化化学学成成绩绩是是85。请请编编写写程序输出这些数据。见程序:程序输出这些数据。见程序:main()charname4=Li;intnum=9800;intscore=85;printf(%s,%d,%c,%f,name,num,sex,score);如如果果有有100个个学学生生,则则更更麻麻烦烦.TC允允许许我我们们定定义义自自己己的的数数据据类类型型,以以解解决决特特定定的的实实际际问问题题。为为了了很很好好地地解解决决例例题题1,我我们们可可以以定定义义一种叫一种叫s
2、tructstudent的数据类型。的数据类型。第二页,本课件共有38页结构体类型也是属于一种构造类型数据,它将不同类型的结构体类型也是属于一种构造类型数据,它将不同类型的数据项组织成一个组合项,这些组合项中的数据项是互数据项组织成一个组合项,这些组合项中的数据项是互相联系的。相联系的。定义一个定义一个结构体类型结构体类型的一般形式:的一般形式:struct结构体名结构体名成员表列成员表列;例如:例如:对于一名学生,有如下不同类型的属性:对于一名学生,有如下不同类型的属性:学号、姓名、年龄、性别、成绩、地址等。学号、姓名、年龄、性别、成绩、地址等。要表示一个学生的六个方面不同类型的有关数据要表
3、示一个学生的六个方面不同类型的有关数据,就可以定义就可以定义一个结构体类型。一个结构体类型。11.1结构体类型概述结构体类型概述第三页,本课件共有38页structstudentintnum;charname10;charsex;intage;floatscore;charaddr30;其中:其中:struct是关键字,表示结构体类型。是关键字,表示结构体类型。student是结是结构体类型名,构体类型名,structstudent和标准类型名和标准类型名(int、float)一样可以用作定义变量的类型。花括号内是结构体中一样可以用作定义变量的类型。花括号内是结构体中的各个成员,每个成员都应进
4、行类型说明。的各个成员,每个成员都应进行类型说明。11.1结构体类型概述结构体类型概述结构体名相当结构体名相当float,int分号不能少分号不能少成员表列成员表列第四页,本课件共有38页一、先定义结构体类型,再定义变量名一、先定义结构体类型,再定义变量名例如:例如:structstudentintnum;charname10;charsex;intage;floatscore;charaddr30;structstudentstudent1,student2;上面的上面的student1和和student2是是structstudent类型的变量,它类型的变量,它们具有们具有structst
5、udent类型的结构。类型的结构。定义结构体变量后,系统为变量分配内存单元。可用定义结构体变量后,系统为变量分配内存单元。可用sizeof(student1)来计来计student1和和student2各占各占49个字节。个字节。11.2定义结构体类型变量的方法定义结构体类型变量的方法第五页,本课件共有38页二、在定义结构体类型的同时定义变量二、在定义结构体类型的同时定义变量例如:例如:structstudentintnum;charname10;charsex;intage;floatscore;charaddr30;student1,student2;11.2定义结构体类型变量的方法定义结
6、构体类型变量的方法第六页,本课件共有38页三、直接定义结构体类型变量三、直接定义结构体类型变量(不写类型名不写类型名)例如:例如:structintnum;charname10;charsex;intage;floatscore;charaddr30;student1,student2;11.2定义结构体类型变量的方法定义结构体类型变量的方法第七页,本课件共有38页说明:说明:1.定义类型与定义变量是不同的,在编译时对类型不分配空定义类型与定义变量是不同的,在编译时对类型不分配空间,只对变量分配存储空间。间,只对变量分配存储空间。2.只能对变量赋值、存取或运算,而对结构体类型不只能对变量赋值、
7、存取或运算,而对结构体类型不可以。可以。3.对结构体中的成员可以单独使用,它的作用和地位相当于对结构体中的成员可以单独使用,它的作用和地位相当于普通变量。普通变量。4.可以用可以用sizeof运算符测一个类型数据的长度。运算符测一个类型数据的长度。n=sizeof(structstudent)或或n=sizeof(student1)n=sizeof(int)n=sizeof(float)11.2定义结构体类型变量的方法定义结构体类型变量的方法第八页,本课件共有38页5.成员也可以是结构体变量。成员也可以是结构体变量。structstudentintnum;charname20;charsex;
8、intage;structdatebirthday;charaddr30;student1,student2;structdateintmonth;intday;intyear;num name sexagebirthdayaddrmonthdayyear第九页,本课件共有38页一个结构体类型的变量一个结构体类型的变量不能不能作为一个整体进行输入和输出,作为一个整体进行输入和输出,只能对结构体变量中的各个成员进行输入、输出和运算。只能对结构体变量中的各个成员进行输入、输出和运算。scanf(“%d,%s,%c,%d,%f,%s”,&student1);printf(“%d,%s,%c,%d,%
9、f,%s”,student1);11.3结构体类型变量的引用结构体类型变量的引用引用方式:结构体变量名引用方式:结构体变量名.成员名成员名例如:例如:scanf(“%d”,&student1.num);student2.num=student1.num;printf(“%d,%d”,student1.num,student2.num);“.”是成员运算符是成员运算符,表示在表示在student1结构体变量中找结构体变量中找出成员出成员num的值。其优先级最高,结合性为自左向右。的值。其优先级最高,结合性为自左向右。如如student1.num+100;第十页,本课件共有38页v若结构体类型嵌套
10、一个结构体类型,则采用逐级访若结构体类型嵌套一个结构体类型,则采用逐级访问的方法,只能对最低级的成员进行访问。问的方法,只能对最低级的成员进行访问。student1.birthday.year访问结构体变量访问结构体变量student1的成员出生年份。而不能的成员出生年份。而不能用用student1.birthday访问访问birthday。v结构体变量的成员可以和普通变量一样进行各种运算结构体变量的成员可以和普通变量一样进行各种运算student2.score=student1.score;student1.age+;+student1.age;第十一页,本课件共有38页例如:例如:stru
11、ctstudentlongintnum;charname20;charsex;charaddr20;a=89031,LiLin,M,123BeijingRoad;Printf(“%ld,%s,%c,%sn”,a.num,a.name,a.sex,a.addr);11.4结构体类型变量的初始化结构体类型变量的初始化第十二页,本课件共有38页结构体数组中的每个元素都是一个结构体类型的数据,结构体数组中的每个元素都是一个结构体类型的数据,它们都分别包括各个成员项。它们都分别包括各个成员项。例如:要表示例如:要表示3名学生的学号、姓名和成绩。名学生的学号、姓名和成绩。structstudentintn
12、um;charname20;floatscore;structstudentstu3=1000,“liming”,70,1001,“wangfan”,80,1002,“zhangyan”,65.5;11.5结构体数组结构体数组第十三页,本课件共有38页程序举例:有四个学生,每个学生包括学号、姓名、成绩,程序举例:有四个学生,每个学生包括学号、姓名、成绩,要求找出成绩最高者的姓名和成绩。要求找出成绩最高者的姓名和成绩。S11_ex1.cmain()structstudentintnum;charname20;intscore;structstudentstu4;inti,k=0,max;prin
13、tf(请按行输入学生的记录请按行输入学生的记录:n);11.5结构体数组结构体数组第十四页,本课件共有38页for(i=0;i4;i+)scanf(%d%s%d”,&stui.num,stui.name,&stui.score);for(max=stu0.score,i=1;imax)max=stui.score;k=i;printf(n最高成绩为最高成绩为:n);printf(”No.:%dnname:%snscore:%dn”,stuk.num,stuk.name,stuk.score);11.5结构体数组结构体数组第十五页,本课件共有38页11.6.1指向结构体变量的指针指向结构体变量的
14、指针一个结构体变量的指针就是该变量所占据的内一个结构体变量的指针就是该变量所占据的内存空间的起始地址,可以设一个指针变量指向存空间的起始地址,可以设一个指针变量指向一个结构体变量。一个结构体变量。例如:例如:structstudentintnum;charname20;intscore;stu;structstudent*p=&stu;11.6指向结构体类型数据的指针指向结构体类型数据的指针第十六页,本课件共有38页 如果要表示如果要表示stu变量中的变量中的num成员项成员项可写成下面三种形式:可写成下面三种形式:1.stu.num2.(*p).num3.p-num11.6指向结构体类型数据
15、的指针指向结构体类型数据的指针第十七页,本课件共有38页 10.6.2指向结构体数组的指针指向结构体数组的指针对结构体数组也可以用指针变量来指向。对结构体数组也可以用指针变量来指向。例如:已知三名学生的有关数据,现全部输出。例如:已知三名学生的有关数据,现全部输出。s11_4.cstructstudentintnum;charname10;charsex;intage;stu3=10101,LiLin,M,18,10102,ZhangFun,M,19,10104,WangMin,F,20;main()structstudent*p;for(p=stu;pnum,p-name,p-sex,p-a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十一章 结构体与共用体链表优秀PPT 第十一 结构 共用 体链表 优秀 PPT
限制150内