c语言基础课件.结构.ppt
《c语言基础课件.结构.ppt》由会员分享,可在线阅读,更多相关《c语言基础课件.结构.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第十章第十章结构1回顾回顾字符串与字符数组的区别是字符串的末尾有一个空字符0以标识字符串结束。用scanf()语句读入字符串时不允许输入中存在空格。gets()和 puts()函数分别用于字符串的输入和输出。在 string.h 中定义了很多字符串处理函数函数,比较常用的有:strcpy()、strcat()、strcmp()和 strlen()。假如程序里需要一组字符串,一种常用的做法就是用一个字符指针数组表示它们。字符串可以作为参数,函数传递机制同数组作为参数,为传址方式。2目标目标理解为什么使用结构定义结构声明结构变量访问结构成员掌握结构作为函数参数的用法3本章结构本章结构结构简介结构体
2、结构体结构数组使用结构结构作为函数参数实现堆栈4结构简介结构简介存储一个班级中 5 名学员的信息(学号、姓名、性别和成绩)问题:I.使用数组MaryJohnPeterRoseKateFMFMF01020304058978.56797.564解决方案:scorenumsexname不能建立数组间的关系II.使用多维数组MaryJohnPeterRoseKateFMFMF01020304058978.56797.564C 语言不允许一个数组包含多种数据类型III.使用结构numnamesexscoreC 语言引入了称为结构的数据存储方式“结构”是一种构造数据类型,它是由若干数据项组合而成的复杂数据
3、对象,这些数据项称为结构的成员。5 定义结构定义结构2-1struct structurenamedatatype variable1;datatype variable2;.;结构成员;结构名structstudentint num;char name20;char sex;定义结构float score;C 语言中的有效数据类型6定义结构定义结构2-2struct student int num;char name20;char sex;float score;num name sexstudent结构定义并不预留内存结构定义放置在程序的开始部分,位于头文件声明之后 score结构定义仅描
4、述了一个结构的形式。如果要在程序里使用结构,需要声明结构变量。7声明结构变量声明结构变量声明结构变量struct student int num;char name20;char sex;float score;struct student student1,student2;I.先定义结构,再声明结构变量struct student int num;char name20;char sex;float score;student1,student2;II.在定义结构类型的同时声明结构变量struct int num;char name20;char sex;float score;stude
5、nt1,student2;III.直接声明结构变量声明一个类型为 student 结构的变量,将会为该变量分配内存,大小是大于或等于其所有成员变量的大小之和。8struct date int month;int day;int year;嵌套结构嵌套结构struct int num;char name20;char sex;struct date birthday;float score;student1,student2;表示结构变量成员的一般形式是:结构变量名.成员名9内存student3struct student student3=3,Yao Ming,M,90.5;结构变量初始化结构
6、变量初始化3Yao MingM赋值的顺序应与成员声明时的顺序一样;允许初始化语句中的值的数目比结构成员数目少。student3.numstudent3.namestudent3.sex90.5student3.score10student1student1.num=1;student1.name=Zhang Zi Liang;student1.sex=M;printf(请输入成绩:请输入成绩:n);scanf(%f,&student1.score);结构变量赋值结构变量赋值1Zhang Zi Liang Mq用输入语句或赋值语句来给结构变量的各个成员赋值7878student2=student
7、1;student21Zhang Zi Liang M7811说明结构体类型与结构体变量概念不同类型:不分配内存;变量:分配内存类型:不能赋值、存取、运算;变量:可以结构体可嵌套结构体成员名与程序中变量名可相同,不会混淆例 struct date int month;int day;int year;struct student int num;char name20;struct date birthday;stu;numnamebirthdaymonthdayyear例 struct student int num;char name20;struct date int month;int
8、 day;int year;birthday;stu;numnamebirthdaymonthdayyear12 引用规则 结构体变量不能整体引用,只能引用变量成员可以将一个结构体变量赋值给另一个结构体变量结构体嵌套时逐级引用成员(分量)运算符优先级:1结合性:从左向右引用方式:结构体变量名.成员名例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;stu1.num=10;stu1.score=85.5;stu1.score+=stu2.score;stu1.age+;例
9、 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;printf(“%d,%s,%c,%d,%f,%sn”,stu1);()stu1=101,“Wan Lin”,M,19,87.5,“DaLian”;()例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;stu2=stu1;()例 struct student int num;char name20;
10、struct date int month;int day;int year;birthday;stu1,stu2;numnamebirthdaymonthdayyearstu1.birthday.month=12;例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;if(stu1=stu2).()结构体变量的引用结构体变量的引用 13 形式一:struct 结构体名结构体名 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.;struct 结
11、构体名结构体名 结构体变量结构体变量=初始数据初始数据;例 struct student int num;char name20;char sex;int age;char addr30;struct student stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;结构体变量的初始化结构体变量的初始化 14形式二:struct 结构体名结构体名 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.结构体变量结构体变量=初始数据初始数据;例 struct student int num;char name20;char sex;i
12、nt age;char addr30;stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;15形式三:struct 类型标识符类型标识符 成员名;成员名;类型标识符类型标识符 成员名;成员名;.结构体变量结构体变量=初始数据初始数据;例 struct int num;char name20;char sex;int age;char addr30;stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;16问题描述:根据学员的成绩,输出不及格学员的详细信息。使用结构示例使用结构示例#includestruct studenti
13、nt num;/学号char*name;/姓名char sex;/性别float score;/成绩;void main()static struct student stu1=1,李亚鹏,M,61;static struct student stu2=2,周晶晶,F,92.5;static struct student stu3=3,姚光明,M,59;printf(不及格学员的名单如下:n);if(stu1.score60)printf(%dt%st%ct%5.2fn,stu1.num,stu1.name,stu1.sex,stu1.score);if(stu2.score60)printf
14、(%dt%st%ct%5.2fn,stu2.num,stu2.name,stu2.sex,stu2.score);if(stu3.score=60&stu2.score=60&stu3.score=60)printf(没有不及格的学员。n);不及格学员的名单如下:3 姚光明 M 59.00stu11李亚鹏M78stu22周晶晶F92stu33姚光明M5917struct stu*pstu;(*pstu).num 或者:pstu-num结构指针变量结构指针变量q一个指针当用来指向一个结构时,称之为结构指针变量。q结构指针变量中的值是所指向的结构变量的首地址。q结构指针变量声明的一般形式为:str
15、uct 结构名*结构指针变量名q通过结构指针可以访问该结构变量的成员,一般形式为:(*结构指针变量).成员名 或者 结构指针变量-成员名#includestruct studentint num;char*name;char sex;float score;stu=1,张宾,F,55,*pstu;void main()pstu=&stu;printf(学号:%d 姓名:%sn,stu.num,stu.name);printf(性别:%c 成绩:%5.2fnn,stu.sex,stu.score);printf(学号:%d 姓名:%sn,(*pstu).num,(*pstu).name);pri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 基础 课件 结构
限制150内