C语言第10章结构体

上传人:cl****1 文档编号:584585845 上传时间:2024-08-31 格式:PPT 页数:45 大小:285.50KB
返回 下载 相关 举报
C语言第10章结构体_第1页
第1页 / 共45页
C语言第10章结构体_第2页
第2页 / 共45页
C语言第10章结构体_第3页
第3页 / 共45页
C语言第10章结构体_第4页
第4页 / 共45页
C语言第10章结构体_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《C语言第10章结构体》由会员分享,可在线阅读,更多相关《C语言第10章结构体(45页珍藏版)》请在金锄头文库上搜索。

1、第十章第十章 结构体与共用体结构体与共用体10.1 结构体及其类型定义结构体及其类型定义 数组 同种数据类型的集合 实际问题中:存在不同类型的数据构成的集合。例:建立学生档案每一个学生:学号(int num)姓名(char name20)性别(char sex)年龄(int age)成绩(float score)地址(char addr30)可将上述数据的集合定义为一种结构体类型:struct student int num;char name20;char sex;int age;float score;char addr30;上述定义中: struct 关键词(保留字), 表示定义一种结构

2、体类型。其一般形式: struct 结构体名 成员表列; 成员表列:类型标识符 成员名 以上仅说明了定义一种类型的方法,尚未定义变量。strudent 结构体名, 相当于类型名(int, float等)10.2 定义结构体变量定义结构体变量一、先定义结构体类型再定义结构体变量一、先定义结构体类型再定义结构体变量 有时为简化,可用宏定义: #define STUDENT struct student则定义x1, x2可简化成: STUDENT x1, x2;三种方法:例: struct student x1, x2; 则 x1, x2为student 型变量,x1, x2可存放student数据

3、。struct student int num;char name20;char sex;int age;float addr30; x1, x2;一般形式 struct 结构体名成员表列 变量名表列;二、二、 在定义结构体类型的同时定义变量在定义结构体类型的同时定义变量:一般形式 struct 成员表列 变量名表列;即不出现结构体类型名几点说明 1. 类型名与变量名是不同的概念 2. 允许成员名又为另一个已定义的结构型变量 3. 每一个成员地位如同该类型的变量 4. 成员名与程序中的变量名可相同但意义不同三、直接定义结构类型变量三、直接定义结构类型变量struct date int mont

4、h;int day;int year;一个嵌套定义的例子:struct studentint num;char name20;char sex;int age;struct date birthday;char addr30; x1, x2; x1或x2num name sex agebirthdaymonth dayyearaddr10.3 结构体类型变量的引用结构体类型变量的引用 引用结构体变量实质上为引用其成员 用分量运算符.优先级最高如:x1为student型变量,则 x1.num: 表示x1的学号 x1.name: 表示x1的名字 x1.birthday.day: 表示x1的出生日

5、1. 只能用成员,不可用结构体变量名直接运算2. 每一个分量的引用与其同类型的简单变量的引用相同。10.4 结构体变量的初始化结构体变量的初始化 struct student x1=8906, Li Ming , M, 25, 8, 3, 1928, Yu Lushan 123 与其它变量的初始化完全一样,结构体变量在定义时可初始化:10.5 结构体数组结构体数组同数组定义类似: struct student w3;则有三个元素w0, w1, w2. 每一个元素为一个结构student型变量。 w0.num: 表示w0的学号 w1.name: 表示w1的姓名对w数组也可初始化: struct

6、student w3=8901, Li Ming , , , ;可省略大小说明,直接用赋初值确定其大小 struct student w =, ,;struct person char name20;int count; leader3=Li, o,Zhang , o, Fang , o;例:有三个侯选人,每一侯选人的数据包括其姓名和得票数,则可定义结构类型person和结构数组leader程序如下:struet person char name20; int count; leader3=Li, 0,Zhang , 0, Fang , 0;main ( )int i, j; chr lead

7、er_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+; printf (n);for (i=0; i3; i+) printf(%5s: %dn, leaderi.name, leaderi.count);运行情况如下: Li Li Fun Zhang Zhang Fun Li Fun Zhang Li count name LiZhangFun 0 0 0 Li : 4 Zhang :

8、3 Fun : 310.6 结构指针结构指针 一个结构型变量(如x1)也有一个起始地址称为结构指针。则p为指针变量,它可用来存放student型变量的地址numnameAddrpx1令p=&x1;一、将结构指针存贮一个变量中一、将结构指针存贮一个变量中结构指针结构指针变量变量如:struct student p;则p为x1的首地址. (p).name (p).score 或者用“ ”运算符, p num, pname, p score. 称为指向运算符, “ ”优先级高于+, 。则:p num+1(x1.num)+ +pnum +(x1.num)先使用x1.num, 再加1先使x1.num加1

9、,再用x1.num访问x1的成员: 总结上述情况,引用结构变量中的成员有三种方法:(2) 用指针变量 (p).成员名 (p).num(3) 用指向运算符成员名 p num(1) 结构体变量名.成员名 x1.num例:struct student int num;char name20;char sex;int age;二、指向结构体数组的指针二、指向结构体数组的指针 与其他指向结构体数组的指针一样,可用指针指向结构体数组。 main ( ) struct student stu3=10101, Li Lin , M, , , ; struct student p; p=stu; while (

10、pp1num)&(p1next!=NULL) p2=p1; p1=p1next;if (p0numnum, &stuscore);while (stunum!=0) head=insert(head, stu); print (input the inserted record: ); stu=(struct student * ) malloc(LEN);scanf(%ld, %f ,&stunum, &stuscore); 运行情况如下:input records:98101, 99 89103, 87 89105, 77 0, 0 Now, These 3 records are.891

11、01 99.089103 87.089105 77.0 input the deleted number: 98103 delete: 89103Now, These 2 records are.89101 99.089105 77.0 input the deleted number: 98105 delete: 89105Now, These 1 records are.89101 99.0input the deleted number: 0 input the inserted record: 89104, 87 Now, These 2 records are.89101 99.089104 87.0input the inserted record: 89106, 65 Now, These 3 records are.89101 99.089104 87.089106 65.0input the inserted record: 0, 0Return

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号