高级语言程序设计(c)12结构体和共用体

上传人:xt****7 文档编号:181153417 上传时间:2023-01-10 格式:PPT 页数:25 大小:333KB
返回 下载 相关 举报
高级语言程序设计(c)12结构体和共用体_第1页
第1页 / 共25页
高级语言程序设计(c)12结构体和共用体_第2页
第2页 / 共25页
高级语言程序设计(c)12结构体和共用体_第3页
第3页 / 共25页
点击查看更多>>
资源描述
结构体和共用体结构体和共用体 1梁春燕华电信息管理教研室主要内容主要内容l结构体变量的定义l结构体变量的引用l结构体变量的初始化l结构体数组l结构体和指针l小结l上机作业 11结构体结构体&结构体是一种构造数据类型&用途:把不同类型的数据组合成一个整体-自定义数据类型l结构体类型定义struct 结构体名 类型标识符 成员名;类型标识符 成员名;.;成员类型可以是基本型或构造型struct是关键字,不能省略合法标识符可省:无名结构体分号不能省例 struct student int num;char name20;char sex;int age;float score;char addr30;namenumsexagescoreaddr2字节2字节20字节1字节4字节30字节.结构体类型定义描述结构的组织形式,不分配内存结构体类型定义的作用域例子图解例子图解l先定义结构体类型,再定义结构体变量l一般形式:struct 结构体名 类型标识符 成员名;类型标识符 成员名;.;struct 结构体名 变量名表列;结构体变量的定义结构体变量的定义形式:struct 结构体名 类型标识符 成员名;类型标识符 成员名;.变量名表列;例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;定义结构体类型的同时定义结构体变量定义结构体类型的同时定义结构体变量形式:struct 类型标识符 成员名;类型标识符 成员名;.变量名表列;例 struct int num;char name20;char sex;int age;float score;char addr30;stu1,stu2;用无名结构体直接定义变量只能一次直接定义结构体变量直接定义结构体变量 结构体类型与结构体变量概念不同类型:不分配内存;变量:分配内存类型:不能赋值、存取、运算;变量:可以 结构体可嵌套 结构体成员名与程序中变量名可相同,不会混淆 结构体类型及变量的作用域与生存期说明:说明:l引用规则l 结构体变量不能整体引用,只能引用变量成员可以将一个结构体变量赋值给另一个结构体变量结构体嵌套时逐级引用成员(分量)运算符优先级:1结合性:从左向右引用方式:结构体变量名.成员名结构体变量的引用结构体变量的引用l形式一:struct 结构体名 类型标识符 成员名;类型标识符 成员名;.;struct 结构体名 结构体变量=初始数据;例 struct student int num;char name20;char sex;int age;char addr30;struct student stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;结构体变量的初始化结构体变量的初始化struct 结构体名 类型标识符 成员名;类型标识符 成员名;.结构体变量=初始数据;例 struct student int num;char name20;char sex;int age;char addr30;stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;结构体变量的初始化结构体变量的初始化形式二:形式二:struct 类型标识符 成员名;类型标识符 成员名;.结构体变量=初始数据;例 struct int num;char name20;char sex;int age;char addr30;stu1=112,“Wang Lin”,M,19,“200 Beijing Road”;结构体变量的初始化结构体变量的初始化形式三:形式三:l结构体数组的定义三种形式:形式一:struct student int num;char name20;char sex;int age;struct student stu2;形式二:struct student int num;char name20;char sex;int age;stu2;形式三:struct int num;char name20;char sex;int age;stu2;numnamesexagenumnamesexagestu0stu125B结构体数组结构体数组例 struct int num;char name20;char sex;int age;stu=,;结构体数组引用引用方式:结构体数组名下标.成员名 struct student int num;char name20;char sex;int age;stu3;stu1.age+;strcpy(stu0.name,”ZhaoDa”);结构体数组初始化结构体数组初始化struct person char name20;int count;leader3=“Li”,0,“Zhang”,0,”Wang“,0;main()int i,j;char leader_name20;for(i=1;i=10;i+)scanf(%s,leader_name);for(j=0;j3;j+)if(strcmp(leader_name,leaderj.name)=0)leaderj.count+;for(i=0;i成员名结构体变量名.成员名指向运算符优先级:1结合方向:从左向右例 int n;int *p=&n;*p=10;n=10struct student stu1;struct student *p=&stu1;=101;(*p).num=101结构体和指针结构体和指针l用结构体变量的成员作参数-值传递l用指向结构体变量或数组的指针作参数-地址传递l用结构体变量作参数-多值传递,效率低用指向结构体的指针作函数参数用指向结构体的指针作函数参数struct data int a,b,c;main()void func(struct data);struct data arg;arg.a=27;arg.b=3;arg.c=arg.a+arg.b;printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c);printf(Call Func().n);func(arg);printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c);void func(struct data parm)printf(parm.a=%d parm.b=%d parm.c=%dn,parm.a,parm.b,parm.c);printf(Process.n);parm.a=18;parm.b=5;parm.c=parm.a*parm.b;printf(parm.a=%d parm.b=%d parm.c=%dn,parm.a,parm.b,parm.c);printf(Return.n);arga:27b:3c:30(main)(func)parma:27b:3c:30copyarga:27b:3c:30(main)(func)parma:18b:5c:90arga:27b:3c:30(main)arga:27b:3c:30(main)例例 用结构体变量作函数参数(用结构体变量作函数参数(1)struct data int a,b,c;main()void func(struct data *parm);struct data arg;arg.a=27;arg.b=3;arg.c=arg.a+arg.b;printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c);printf(Call Func().n);func(&arg);printf(arg.a=%d arg.b=%d arg.c=%dn,arg.a,arg.b,arg.c);void func(struct data *parm)printf(parm-a=%d parm-b=%d parm-c=%dn,parm-a,parm-b,parm-c);printf(Process.n);parm-a=18;parm-b=5;parm-c=parm-a*parm-b;printf(parm-a=%d parm-b=%d parm-c=%dn,parm-a,parm-b,parm-c);printf(Return.n);arga:18b:5c:90(main)arga:27b:3c:30(main)arga:27b:3c:30(main)(func)parm*arga:18b:5c:90(main)(func)parm*例例 用结构体指针变量作函数参数(用结构体指针变量作函数参数(2)小结小结小结小结l结构体变量的定义、引用和初始化:lstruct l.成员操作符 l结构体数组的定义、引用和初始化;l指向结构体的指针的用法l-指向运算符上机作业上机作业上机作业上机作业11l试验目的l掌握结构体类型变量的定义和使用;l掌握结构体类型数组的概念和应用。上机作业上机作业11l试验内容l有5个学生,每个学生的数据包括学号、姓名、三门课的成绩;l编写五个子函数:l函数input,以表中的数据初始化5个学生的数据;l函数average,求出每个学生的平均分;l函数class_average,求出每门课的平均分;l函数max,求出平均分最高的学生;l函数class_max,求出每门课分数最高的学生.l 在主函数main中分别调用五个子函数,并输出五个学生的数据和平均分、三门课程的平均分、平均分最高和每门课分数最高的学生数据。numnameclass1class2class3001Li Ming87.0094.0079.00002Chen Fei68.0089.0082.00003Sun Jie78.0090.0074.00004He Wei69.0070.0062.00005Liu Li84.0092.0081.00END
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!