9 C语言结构体.ppt

上传人(卖家):hwpkd79526 文档编号:6157780 上传时间:2023-06-04 格式:PPT 页数:38 大小:486.50KB
下载 相关 举报
9 C语言结构体.ppt_第1页
第1页 / 共38页
9 C语言结构体.ppt_第2页
第2页 / 共38页
9 C语言结构体.ppt_第3页
第3页 / 共38页
9 C语言结构体.ppt_第4页
第4页 / 共38页
9 C语言结构体.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、2023-6-41C语言语言结构体结构体C语言程序设计语言程序设计2本次课程所讲内容本次课程所讲内容l定义结构体类型定义结构体类型l定义结构体类型变量定义结构体类型变量l引用结构体变量引用结构体变量l给结构体变量赋值给结构体变量赋值l结构体的嵌套结构体的嵌套l结构体数组结构体数组l指向结构体类型变量的指针指向结构体类型变量的指针C语言程序设计语言程序设计3C语言程序设计语言程序设计3本次课程所讲内容本次课程所讲内容l定义结构体类型定义结构体类型l定义结构体类型变量定义结构体类型变量l引用结构体变量引用结构体变量l给结构体变量赋值给结构体变量赋值l结构体的嵌套结构体的嵌套l结构体数组结构体数组l

2、指向结构体类型变量的指针指向结构体类型变量的指针定义结构体类型定义结构体类型学号学号姓名姓名性别性别年龄年龄成绩成绩地址地址10001 Zhang XinM1990.5Shanghai10002Wang LiF2098Beijing学号学号(num):整型整型(int)变量变量姓名姓名(name):字符型字符型(char)数组数组性别性别(sex):字符型字符型(char)变量变量年龄年龄(age):整型整型(int)变量变量成绩成绩(score):单精度实型单精度实型(float)变量变量地址地址(addr):字符型字符型(char)数组数组表中包含多种类型的表中包含多种类型的数据,无法用任

3、何单数据,无法用任何单一种类的数据类型来一种类的数据类型来完全描述。完全描述。C语言允许用户建立语言允许用户建立一种集不同数据类型一种集不同数据类型于一体的数据构造类于一体的数据构造类型型结构体类型结构体类型。学生档案表学生档案表定义结构体类型定义结构体类型l用户必须在程序中自己建立所需的结构体类型用户必须在程序中自己建立所需的结构体类型l定义结构体类型:对成员的声明,包括每个成定义结构体类型:对成员的声明,包括每个成员所具有的数据类型的描述员所具有的数据类型的描述l定义(声明)一个结构体类型的一般形式为定义(声明)一个结构体类型的一般形式为 struct 结构体类型名结构体类型名 类型名类型

4、名 成员名成员名;类型名类型名 成员名成员名;成员列表成员列表要有分号要有分号C语言程序设计语言程序设计6定义结构体类型定义结构体类型l对于学生档案表,构造对于学生档案表,构造结构体类型结构体类型struct Student int num;char name20;char sex;int age;float score;char addr30;每个数据项被称为该结构体的每个数据项被称为该结构体的结构体成员结构体成员注意:注意:struct Student 是一种结构体类型,不是一种结构体类型,不是变量!是变量!C语言程序设计语言程序设计7定义结构体类型定义结构体类型l结构体类型并不是只有一种

5、,而是结构体类型并不是只有一种,而是可以设计出许多种结构体类型可以设计出许多种结构体类型struct Singer /歌手代号歌手代号 int s_id;/歌手参赛歌曲得分歌手参赛歌曲得分 double s1;/歌手综合知识得分歌手综合知识得分 double s2;/总分总分 double sum;struct Date int month;int day;int year;C语言程序设计语言程序设计8练习练习姓名姓名工作单位工作单位邮编邮编固定电话固定电话E-mailLi XinBei Liu LiT通讯录通讯录struct Address_list char name20;char dep

6、art30;int postcode;int phone;char email30;C语言程序设计语言程序设计9C语言程序设计语言程序设计9本次课程所讲内容本次课程所讲内容l定义结构体类型定义结构体类型l定义结构体类型变量定义结构体类型变量l引用结构体变量引用结构体变量l给结构体变量赋值给结构体变量赋值l结构体的嵌套结构体的嵌套l结构体数组结构体数组l指向结构体类型变量的指针指向结构体类型变量的指针C语言程序设计语言程序设计10定义结构体类型定义结构体类型变量变量l先声明结构体类型再定义结构体变量先声明结构体类型再定义结构体变量struct Student int num;char name2

7、0;char sex;int age;float score;char addr30;struct Student student1,student2;结构体变量结构体变量struct 结构体类型名结构体类型名 结构体成员列表结构体成员列表;struct 结构体类型名结构体类型名 结构体变量结构体变量 名列表名列表C语言程序设计语言程序设计11定义结构体类型定义结构体类型变量变量l声明结构体类型的同时定义结构体变量声明结构体类型的同时定义结构体变量struct Student int num;char name20;char sex;int age;float score;char addr3

8、0;student1,student2;struct 结构体类型名结构体类型名 结构体成员列表结构体成员列表;结构体变量名列表结构体变量名列表;C语言程序设计语言程序设计12定义结构体类型定义结构体类型变量变量l不指定类型名而直接定义结构体类型变量不指定类型名而直接定义结构体类型变量struct int num;char name20;char sex;int age;float score;char addr30;student1,student2;struct 结构体成员列表结构体成员列表;结构体变量名列表结构体变量名列表;没有结构体类型名没有结构体类型名这种情况只能在定义结构这种情况只能

9、在定义结构体类型的同时定义结构体体类型的同时定义结构体变量变量定义结构体类型定义结构体类型变量变量l定义结构体类型变量之后,系统会为之分配定义结构体类型变量之后,系统会为之分配内存空间,该变量内存空间,该变量的长度的长度(所占字节数所占字节数)也被也被固定下来固定下来struct Student int num;char name20;char sex;int age;float score;char addr30;struct Student student1,student2;student1和和student2的长度为的长度为4201443063结构体类型变量的长度等于结构体类型变量的长

10、度等于它的各成员长度之和。它的各成员长度之和。C语言程序设计语言程序设计14定义结构体类型定义结构体类型变量变量l运算符运算符sizeof()返回各类型变量的长度返回各类型变量的长度sizeof(struct Student)C语言程序设计语言程序设计15C语言程序设计语言程序设计15本次课程所讲内容本次课程所讲内容l定义结构体类型定义结构体类型l定义结构体类型变量定义结构体类型变量l引用结构体变量引用结构体变量l给结构体变量赋值给结构体变量赋值l结构体的嵌套结构体的嵌套l结构体数组结构体数组l指向结构体类型变量的指针指向结构体类型变量的指针C语言程序设计语言程序设计16引用结构体变量引用结构

11、体变量lC语言对结构体变量的处理是通过语言对结构体变量的处理是通过对其成员的引用实现的对其成员的引用实现的l引用结构体变量中成员的方式为引用结构体变量中成员的方式为结构体变量名结构体变量名.成员名成员名l“.”是成员运算符,它在所有的运是成员运算符,它在所有的运算符中优先级最高算符中优先级最高一个整体一个整体C语言程序设计语言程序设计17引用结构体变量引用结构体变量lstudent1.num代表代表student1变量中的变量中的num成员成员l对变量的成员赋值对变量的成员赋值student1.num=1001;l输入变量的成员输入变量的成员scanf(%d,);l输出变量的成员输出变量的成员

12、printf(%d,);l同类的结构体变量可以同类的结构体变量可以 互相赋值互相赋值student1=student2;&student1.numstudent1.numstruct Student int num;char name20;char sex;int age;float score;char addr30;student1,student2;引用结构体变量引用结构体变量l对结构体变量的成员可以像普通变量对结构体变量的成员可以像普通变量一样进行各种运算一样进行各种运算student2.score=student1.score;sum=student1.score+student2.

13、score;student1.age+;+student1.age;C语言程序设计语言程序设计19C语言程序设计语言程序设计19本次课程所讲内容本次课程所讲内容l定义结构体类型定义结构体类型l定义结构体类型变量定义结构体类型变量l引用结构体变量引用结构体变量l结构体变量的赋值结构体变量的赋值l结构体的嵌套结构体的嵌套l结构体数组结构体数组l指向结构体类型变量的指针指向结构体类型变量的指针C语言程序设计语言程序设计20结构体变量的赋值结构体变量的赋值l定义结构体变量的同时对其初始化定义结构体变量的同时对其初始化#include void main()struct Studentnewint nu

14、m;char name20;char sex;char addr20;a=10101,Li Lin,M,123 Beijing Road;printf(No.:%dnname:%snsex:%cnaddress:%sn,a.num,a.name,a.sex,a.addr);初始化初始化C语言程序设计语言程序设计21结构体变量的赋值结构体变量的赋值#include#include void main()struct Studentnewint num;char name20;char sex;char addr20;a;a.num=10101;strcpy(a.name,Li Lin);a.se

15、x=M;strcpy(a.addr,123 Beijing Road);printf(No.:%dnname:%snsex:%cnaddress:%sn,a.num,a.name,a.sex,a.addr);不能写作不能写作a.name=“Li Lin”(错误错误)定义完变量之后,定义完变量之后,再对各成员赋值再对各成员赋值C语言程序设计语言程序设计22结构体变量的赋值结构体变量的赋值#include#include void main()struct studentnewint num;char name20;char sex;char addr20;a;scanf(%d%c,&a.num,

16、&a.sex);getchar();gets(a.name);gets(a.addr);printf(No.:%dnname:%snsex:%cnaddress:%sn,a.num,a.name,a.sex,a.addr);从键盘上输入数据,从键盘上输入数据,对各成员赋值对各成员赋值C语言程序设计语言程序设计23结构体变量的赋值结构体变量的赋值#include void main()struct singerint s_id;double s1;double s2;double sum;a;double sum;a.s_id=2011;a.s1=88.5;a.s2=0.85;a.sum=a.s

17、1+a.s2;sum=a.sum;printf(sum=%fna.sum=%fn,sum,a.sum);结构体类型中的成员名可以结构体类型中的成员名可以与程序中的变量名相同,但与程序中的变量名相同,但二者不代表同一对象二者不代表同一对象引用结构体类型中的成员引用结构体类型中的成员结构体变量名结构体变量名.成员名成员名引用普通变量时引用普通变量时直接使用变量名直接使用变量名C语言程序设计语言程序设计24C语言程序设计语言程序设计24本次课程所讲内容本次课程所讲内容l定义结构体类型定义结构体类型l定义结构体类型变量定义结构体类型变量l引用结构体变量引用结构体变量l给结构体变量赋值给结构体变量赋值l

18、结构体的嵌套结构体的嵌套l结构体数组结构体数组l指向结构体类型变量的指针指向结构体类型变量的指针C语言程序设计语言程序设计25结构体的嵌套结构体的嵌套struct Case_table char name20;char sex;float height;float weight;struct Sight_table sight;char state10;health;姓名姓名 性别性别 身高身高体重体重视力视力身体状况身体状况左眼左眼右眼右眼TomM1.7667.21.00.9goodstruct Sight_table float left;float right;C语言程序设计语言程序设计

19、26引用嵌套的结构体变量的成员引用嵌套的结构体变量的成员health.sight.left=1.0;health.sight.right=0.9;姓名姓名 性别性别 身高身高体重体重视力视力身体状况身体状况左眼左眼右眼右眼TomM1.7667.21.00.9good如果结构体类型的成员又属于一个结构体类型,如果结构体类型的成员又属于一个结构体类型,则要用若干个成员运算符,一级一级地找到最低则要用若干个成员运算符,一级一级地找到最低一级的成员。只能对最低级的成员进行赋值、存一级的成员。只能对最低级的成员进行赋值、存取或者运算。取或者运算。C语言程序设计语言程序设计27C语言程序设计语言程序设计2

20、7本次课程所讲内容本次课程所讲内容l定义结构体类型定义结构体类型l定义结构体类型变量定义结构体类型变量l引用结构体变量引用结构体变量l给结构体变量赋值给结构体变量赋值l结构体的嵌套结构体的嵌套l结构体数组结构体数组l指向结构体类型变量的指针指向结构体类型变量的指针C语言程序设计语言程序设计28结构体数组结构体数组l定义结构体数组定义结构体数组struct Student int num;char name20;int age;float score;char addr30;struct Student stu3;struct Student int num;char name20;int ag

21、e;float score;char addr30;stu3;C语言程序设计语言程序设计29结构体数组结构体数组l结构体数组的初始化结构体数组的初始化struct Student int num;char name20;int age;float score;char addr30;stu3=10101,“LiLin”,18,87.5,“103 Beijing Road”,10102,”ZhangFen”,19,99,“130 Shanghai Road”,10104,”WangMin”,20,78.5,“1010 Zhongshan Road”;C语言程序设计语言程序设计30结构体数组应用举

22、例结构体数组应用举例#include#includestruct person char name20;int count;leader3=Li,0,Zhang,0,Fun,0;leader3=Li,0,Zhang,0,Fun,0;结构体类型的声明以结构体类型的声明以及结构体变量的定义及结构体变量的定义可以在函数之外可以在函数之外C语言程序设计语言程序设计31结构体数组应用举例结构体数组应用举例void main()int i,j;char leader_name20;for(i=1;i=10;i+)scanf(%s,leader_name);for(j=0;j3;j+)if(strcmp(l

23、eader_name,leaderj.name)=0)leaderj.count+;printf(nResult:n);for(i=0;i.num=10101;strcpy(p-.name,Li Lin);p-.sex=M;p-p).score=89.5;struct student stu_1;struct student*p;p=&stu_1;C语言程序设计语言程序设计36指向结构体类型数据的指针指向结构体类型数据的指针l指向结构体数组的指针变量指向结构体数组的指针变量struct studentint num;char name20;char sex;float score;struct

24、 student stu3=10101,Li Lin,M,66,10102,Zhang Fun,M,86,10104,Wang Min,F,90;struct student*p=stu;c14_7.c定义一个指针变量定义一个指针变量p,指指向一个向一个struct student类类型的数组型的数组stu。p中存放中存放stu0的首地址的首地址。C语言程序设计语言程序设计37指向结构体类型数据的指针指向结构体类型数据的指针l指向结构体数组的指针变量指向结构体数组的指针变量struct student*p;for(p=stu;pnum,p-name,p-sex,p-score);printf(“d%s%c%fn”,(*p).num,(*p).name,(*p).sex,(*p).score);printf(d%s%c%fn,stui.num,stuiname,stui.sex,stui.score);开始时,开始时,p指向指向stu0,执行执行p+后后,p指向指向stu1,再执行再执行p+后,后,p指向指向stu2C语言程序设计语言程序设计38Thanks!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 项目策划与方案类
版权提示 | 免责声明

1,本文(9 C语言结构体.ppt)为本站会员(hwpkd79526)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|