电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

计算机二级C语言结构体要点

14页
  • 卖家[上传人]:博****1
  • 文档编号:482633554
  • 上传时间:2024-02-19
  • 文档格式:DOC
  • 文档大小:41KB
  • / 14 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、结构体与共用体要点一、概述结构体(structure)是一种数据类型,它把互相联系的数据组合成一个整体。把不同类型的数据组合成一个有机的整体,可以用结构体解决。结构体中的每一项数据,称为结构体“成员”(member)或“分量”。声明结构体类型的一般形式:struct 结构体名 成员表列;声明各成员的形式:类型名 成员名;例如:学生数据struct studentint num; char name20; char sex; int age; float score; char addr30; 注意不要忽略最后的分号student结构体类型占59个字节。二、定义结构体类型变量的方法1先声明结构体类型再定义变量名 struct student student1, student2;要求指定为某一特定的结构体类型2在声明类型的同时定义变量struct 结构体名成员表列变量名表列;例如:struct studentint num; char name20; char sex; int age; float score; char addr30; student1, student2;3直接定义

      2、结构体类型变量struct 成员表列变量名表列;几点说明:(1)类型与变量是不同的概念;(2)结构体中的成员可单独使用,其作用与地位相当于普通变量;(3)成员也可以是一个结构体变量;(4)成员名与普通变量名相同,不代表同一对象。三、结构体变量的引用(1)不能将结构体变量整体进行输入和输出,只能对各个成员分别进行输入和输出。printf(%d,%s,%c,%d,%f,%sn,student1);错误(2)引用成员的方式:结构体变量名.成员名student1.num=10010;student1.birthday.month=3;(若干个成员运算符)当成员是另一个结构体变量时,应一级一级地引用成员。仅在以下两种情况下,可以把结构体变量作为一个整体来访问。(1) 结构体变量整体赋值例、student2 = student1;(2)取结构体变量地址例、printf(%x, &student1); /*输出student1的地址 */四、结构体变量的初始化struct studentlong int num; /* 学号 */ char name20; /* 姓名 */ char sex; /*

      3、 性别 */ char addr20; /* 地址 */ a = 89031, Li Lin, M, 123 Beijing Road; 注意:不能在结构体内赋初值。例、下面程序错误struct student long int num = 89031; char name20 = Li Lin; char sex = M; char addr30 = 123 Bejing Road; a;五、结构体数组每个数组元素都是一个结构体类型数据1定义结构体数组和定义结构体变量的方法相仿(三种方法)2结构体数组的初始化在定义数组的后面加上:=初始表列;struct student int num; char name20; char sex; int age; float score; char addr30; stu3 = 10101,Li Lin, M, 18, 87.5, 103 Bejing Road, 10102,Zhang Fun,M, 19, 99, 130 Shanghai Roaad, 10104,Wang Min, F, 20, 78.5, 1010 Zhongshan R

      4、oad ;六、指向结构体类型数据的指针结构体变量的指针:就是该变量所占据的内存段的起始地址。1指向结构体变量的指针(*p).num表示:p指向的结构体变量中的成员num成员运算符“.”优先于“*”运算符,不能写成*p.num*(p.num)三种表示形式:(1)构体变量名. 成员名(2)(*p).成员名 该方式用得很少(3)p-成员名2指向结构体数组的指针注意:(1)p=stu;,则p+指向stu1(2)运算符“-”优先于“+”运算符+p-num:使p所指向的num成员值加1(+p)-num:先使p+1,然后得到它指向的元素中的num成员值例:有4个学生,每个学生包括学号、姓名和成绩。要求找出成绩最高者的姓名和成绩。#include stdio.hvoid main() struct student int num; /* 学号 */char name20; /* 姓名*/float score; /* 成绩 */;struct student stu4; /* 4个学生 */struct student *p;int i;int temp = 0; /*成绩最高学生在数组中的序号,03

      5、 */ float max; /* 最高成绩 */for(i=0; i4; i+) /* 输入4个学生的学号、姓名、成绩 */scanf(%d %s %f, &stui.num, stui.name, &stui.score); for(max=stu0.score, i=1; i max)max = stui.score;temp = i; p = stu + temp; /* p指向成绩最高的学生结构 */printf(nThe maximum score:n);printf(No.: %dn name: %sn score: %4.1fn,p-num, p-name, p-score); 3、结构体变量、指向结构体的指针均可作为函数参数例:有一个结构体变量stu,内含学生学号、姓名和三门课程的成绩。要求在main中赋以值,在函数print中打印输出。#include stdio.h#include string.h#define format %dn %sn %fn %fn %fnstruct student int num; /*学号 */char name20; /* 姓名*

      6、/float score3; /* 三门课程的成绩 */; void print(struct student *p); /*print函数原型声明 */void main()struct student stu;stu.num = 12345;strcpy(stu.name, Li Li); stu.score0 = 67.5;stu.score1 = 89;stu.score2 = 78.6; print(&stu); /*如果stu是结构体数组,则不要&符号*/ void print(struct student *p) /*print函数定义 */printf(format, p-num, p-name, p-score0, p-score1, p-score2); printf(n); (1)结构体的成员作函数的参数。与普通变量作函数参数的用法相同。值传送,不能修改实参的值。(2)结构体指针作函数的参数。将结构体的地址传送给函数,效率高,可以修改实参的值。(3)结构体作函数的参数。将结构体的全部成员值传送给函数,效率低,不能修改实参的值。例:#includestruct ST

      7、Uchar name10; int num;void f(char *name,int num)struct STU s2=SunDan,2004,Penghua,20045; num=s0.num; strcpy(name,s0.name);main()struct STU s2=YangSan,20041,LiSiGuo,20042,*p; p=&s1; f(p-name,p-num);前一个参数的地址,后一个是数值 printf(%s %dn,p-name,p-num); getch();运行结果:SunDan 20042前一个随子函数变化,后一个不变仍是主函数中的值。七、用指针处理链表(一定要学会画图)1链表概述链表:动态地进行存储分配的一种结构,它动态地进行存储分配。数组:存放不同班级的学生数据,数组定得足够大,浪费内存。数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移

      8、动其它数据项)。链表有单向链表、双向链表、环形链表等形式。结点:链表中的每一个元素,包括两部分用户需要的实际数据下一个结点的地址 head AB C D NULL head指向第一个元素,第一个元素又指向第二个元素,直到最后一个元素,该元素不再指向其它元素。表尾:地址部分放一个“NULL”(表示空地址)结点应为结构体类型,一个结点中应包含一个指针变量,用它存放下一个结点的地址。例:struct studentint num; float score; struct student next;/*next指向struct student类型数据*/;student链表2简单链表所有结点都是在程序中定义的,不是临时开辟的,是“静态链表”3处理动态链表所需的函数(1)malloc(size)作用:在内存的动态存储区中。函数返回值:该分配域的起始地址。不成功,则返回NULL。(2)calloc(n,size)分配n个长度为size的连续空间(3)free(p)释放由p指向的内存区。函数无返回值。4建立动态链表 即从无到有,一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。例、写一函数建立一个有3名学生数据的单向动态链表过程:开辟单元输入数据加入链表head:头指针

      《计算机二级C语言结构体要点》由会员博****1分享,可在线阅读,更多相关《计算机二级C语言结构体要点》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.