快速学会数据结构中的指针和结构体

上传人:自*** 文档编号:48512179 上传时间:2018-07-16 格式:PPT 页数:35 大小:1.15MB
返回 下载 相关 举报
快速学会数据结构中的指针和结构体_第1页
第1页 / 共35页
快速学会数据结构中的指针和结构体_第2页
第2页 / 共35页
快速学会数据结构中的指针和结构体_第3页
第3页 / 共35页
快速学会数据结构中的指针和结构体_第4页
第4页 / 共35页
快速学会数据结构中的指针和结构体_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《快速学会数据结构中的指针和结构体》由会员分享,可在线阅读,更多相关《快速学会数据结构中的指针和结构体(35页珍藏版)》请在金锄头文库上搜索。

1、 指针 指针的定义 声明一个指针变量 给指针赋值 指针的运算自定义数据类型 基本数据类型 数据类型 结构类型 基本数据类型有哪些? 如何使用?问题一:学籍管理 问题:学籍管理需要每个学生的下列数据:学号 、姓名、性别、年龄、分数,请用C语言程序存 储并处理一组学生的学籍。单个学生学籍的数据结构 学号(num):int型 姓名(name):char 型 性别(sex):char型 年龄(age):int型 分数(score):float型单个学生学 籍的数据结 构如何定义 ?多个学生学 籍的数据结 构如何定义 ?解决办法 定义一个结构体类型 当已有的类型满足不了需要时,C语言规定可 以由用户自定

2、义数据类型。 struct student int num; char name10; char sex; int age; float score; ;另一个例子 定义一个结构体类型 日期类型 struct date int month; int day; int year; ;定义一个结构体类型 语法:struct 结构体名称成员列表;定义一个时间类型Time,成员有时、分、 秒。 结构体变量的定义 先定义结构体类型,再定义结构体变量 一般形式: struct 结构体名 类型标识符 成员名;类型标识符 成员名;. ; struct 结构体名 变量名表列;例 struct student i

3、nt num;char name20;char sex;int age;float score;char addr30; struct student stu1,stu2; n说明l结构体类型与结构体变量概念不同w类型:不分配内存; 变量:分配内存w类型:不能赋值、存取、运算; 变量:可以w结构体的成员可以是一个结构变量l结构体可嵌套l结构体成员名与程序中变量名可相同,不会混淆l结构体类型及变量的作用域与生存期例 struct date int month;int day;int year;struct student int num;char name20;struct date birth

4、day;stu;numnamebirthday month dayyear例 struct student int num;char name20;struct date int month;int day;int year;birthday;stu;numnamebirthday month dayyear诸如学生花名册、通讯录之类的数据,最适合用结构体来处 理。因为这类数据具有如下特点:每个人信息都是一个复合的构造数据,如由姓名、学号、性 别、年龄、家庭住址、联系电话等“成员”组成。不同的人,数据的值不同,但都有共同的成员组成。为将不同数据类型、但相互关联的一组数据,组 合成一个有机整体使

5、用,C语言提供一种称为“结构” 的数据类型。 结构体 也是构造类数据,但其成员可以是任何类型的。构造类型使用户可以象处理单个变量一样来处 理复杂的数据结构。 要在程序中使用结构必须: w 声明结构类型 结构类型的声明描述该结构的成员名称和它 们的数据类型。 w 定义结构变量 结构变量的定义是根据结构类型为所定义变 量分配存储空间。 9.3 结构体变量的引用 引用规则 结构体变量不能整体引用,只能引用变量成员l可以将一个结构体变量赋值给另一个结构体变量l结构体嵌套时逐级引用(只能对最低级的成员进行 赋值或存取以及运算)成员(分量)运算符 优先级: 1 结合性:从左向右引用方式: 结构体变量名.成

6、员名 例 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+;例 struct student int num;char name20;char sex;int age;float score;char addr30;stu1,stu2; printf(“%d,%s,%c,%d,%f,%sn”,stu1); ()例 struct student int

7、num;char name20;char sex;int age;float score;char addr30;stu1,stu2; stu2=stu1; ( )例 struct student int num;char name20;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 ad

8、dr30;stu1,stu2; if(stu1=stu2) () 结构体变量的初始化 形式一: 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 结构体名 合称“结构类型标识符”*/*成员表列*/*此处分号不能

9、省略*/小结:什么是“结构体类型”?关键字 用户指定 用户自己定义的构造型数据类型; 由若干数据项(成员)组成; 同一结构体中的成员可以具有不同的数据类型; 结构体类型变量占用的内存长度等于各成员项长度之和。使用结构体的一般步骤 根据问题的要求定义一个结构体类型 用自己定义的结构体类型定义结构体变量 在程序中使用结构体变量处理问题 注意成员定义与普通变量定义的区别:成员定义时不为其分配内存变量定义时为其分配内存main() struct student int number;char name6; char sex;int age;char address20; ;printf(“%dn “,

10、sizeof(struct student); 结果:31main() struct char name15;char class12;long num; stu=“Wenli“,“Computer 1“,200113;printf(“%sn%sn%ldn“,stu.name,stu.class,stu.num) ; 结果:结果:WenliWenliComputer 1 Computer 1200113 200113用结构体数组管理一组学生的信息 前面单个学生可用结构体变量std1,std2处理 若是一个班级的学生呢? 解决办法:v一组学生的数据,可以使用结构体数组进行 处理。假定数组名为st

11、d,则定义student数组, 可以使用下面的说明语句: struct student std10;v或者在定义结构体类型的同时定义结构体数 组 9.5 结构体数组9.5.1定义结构体数组:每个数组元素都是一个结构体类 型的数据,它们都分别包括各个成员项定义结构体后定义 struct student int num;char name20;char sex;int age;float score;char addr30; ; struct student stu3;定义结构体时同时定义 struct student int num;char name20;char sex;int age;fl

12、oat score;char addr30; stu3;9.5.2 结构体数组的初始化结构数组n初值表1,初值表2,.,初值表n;n n一般初始化一般初始化n n省略维数省略维数 n n定义后初始化定义后初始化一般初始化一般初始化 struct student int num;char name20;char sex;int age;float score; stu3= 10101,“李宁“,M,18,87.5,10102,“张凡“,M,19,99,10103,“王敏“,F,20,78.5 ;定义后初始化 struct student int num;char name20;char sex;

13、int age;float score; ; struct student stu3= 10101,“李宁“,M,18,87.5, 10102,“张凡“,M,19,99,10103,“王敏“,F,20,78.5 ;每个数组元素的初 始数据都用花括号括起 来。例 2统计侯选人选票。有三个候选人,每次输入一个得 票的候选人名,要求最后输出个人得票结果。 struct person char name20;int count; leader3=“Li”,0,“Zhang”,0,”Wang“,0; main() int i,j; char leader_name20;for(i=1;i成员名 结构体变

14、量名.成员名成员运算符 . 指向运算符 - 优先级: 最高 结合方向:从左向右 (*) 与 - 等价示例9main() struct student long int num;char name20;char sex;float score;stu,*p; /定义结构体变量stu和结构体指针变量pp= /p指向结构体stustu.num=89101;strcpy(stu.name,“Li Lin“);p-sex=M;p-score=89.5;printf(“nNo:%ldnname:%snsex:%cnscore:%fn“,(*p).num,p-name,stu.sex,p-score); 9.2 指向结构体数组的指针struct student int num;char name20;char sex;int age; stu3=10101,“Li Lin“,M,18,10102,“Zhang Fun“,M,19,10104,“Wang Min“,F,20; main(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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