




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、9.1 定义和使用结构体变量9.2 使用结构体数组9.3 结构体指针9.4 用指针处理链表9.5 共用体类型9.6 使用枚举类型9.7 用typedef声明新类型名主要内容 用typedef声明类型新名类型新名 结构体的定义 结构体成员的访问 结构体变量做函数的参数 链表9.7 用typedef声明类型新名类型新名 功能:用自定义名字为已有数据类型命名 类型定义简单形式: typedef type name;例 typedef int integer;类型定义语句关键字已有数据类型用户定义的类型名例 typedef float real;新名取好后,与已有类型名一样使用例 integer a,
2、b,c; real f1,f2; int a,b,c; float f1,f2; 说明:1.typedef 没有创造新数据类型2.typedef 是定义类型新名,不能定义变量3.typedef 与 define 不同 define typedef预编译时处理 编译时处理简单字符置换 为已有类型命名 类似于我们已经有自己的法定类似于我们已经有自己的法定姓名,还在姓名,还在qq上申请一个账号,上申请一个账号,定义一个名称一样定义一个名称一样 用用typedef定义类型新名的方法定义类型新名的方法 先按定义数组变量形式书写:int n100; 将变量名换成自己指定的类型名: intnum100; 在
3、前面加上typedef,得到定义语句 typedef intnum100; num就可以用来定义变量:numa; 等价于: int a100;例1:typedef char * string;string c1;char * c1;作用:将字符类型的指针定义了一个新名string 理解用理解用typedef定义的类型新名定义的类型新名 去掉typedef,得到 char * string; char * string中string是类型新名,该类型描述的是char * 既是字符指针类型 因此 string c1,定义的c1就是字符指针变量。什么是结构体,为什么要引入结构体有有30个学生个学生,
4、每个学生的数据,每个学生的数据包括学号、姓包括学号、姓名和名和3门课的成绩门课的成绩,从键盘输入每个学生的数,从键盘输入每个学生的数据,并计算每个学生的平均成绩据,并计算每个学生的平均成绩职工数据包括职工号、姓名及工资等数据项职工数据包括职工号、姓名及工资等数据项。编写程序对职工数据完成操作编写程序对职工数据完成操作问题:以上两个任务中的数据所涉及的数据项类型不一致9.1.1 结构体类型的定义9.1.1 9.1.1 结构体结构体是这样的一种是这样的一种数据组织结构数据组织结构,将,将不同类型的数不同类型的数据组合成一个有机的整体据组合成一个有机的整体以便引用。以便引用。10010 li fun
5、m1887.5beijingstunonamesex age scoreaddr字符字符串串字符串字符串字符字符整型整型浮点型浮点型字符串字符串9.1.1 结构体类型的定义9.1.1 9.1.1 结构体类型的定义结构体类型的定义 定义一个结构体类型的一般形式:定义一个结构体类型的一般形式:struct 结构体类型名结构体类型名 成员列表成员列表 ;struct student char stuno8; char name20; char sex; int age; float score; char addr30;;010010 li funm1887.5beijingstunonamesex
6、 age scoreaddrstruct是关键字,不能省略合法标识符可省:无名结构体类型,不方便下次使用成员声明: 类型标识符 成员名;分号不能省略struct student 与与 int/char/float/double地位等同,是地位等同,是用户自定义适合需要的构造用户自定义适合需要的构造类型类型9.1.2 结构体变量 先定义结构体类型,再定义结构体变量先定义结构体类型,再定义结构体变量struct student char stuno8; char name20; char sex; int age; float score; char addr30;;struct student
7、stu1,sut2;数据类型名数据类型名。与结。与结构体类型定义的首构体类型定义的首部相同部相同变量名变量名student stu1,sut2 ; struct student char stuno8; char name20; char sex; int age; float score; char addr30; stu1,*s ;也可以,紧接着定义结构体类型的语句立即定也可以,紧接着定义结构体类型的语句立即定义变量义变量还可以,缺省结构体类型名。缺点是不方便下还可以,缺省结构体类型名。缺点是不方便下次使用。少用!次使用。少用!struct student char stuno8; cha
8、r name20; char sex; int age; float score; char addr30; stu1,sut2 ;结构体类型指针,将结构体类型指针,将来指向同类型变量,来指向同类型变量,例如:例如:s = &stu1;嫌麻烦,可以用嫌麻烦,可以用typedef定义类型新名定义类型新名typedef struct student char stuno8; char name20; char sex; int age; float score; char addr30; student ;student stu1,*p_stu;类型新名类型新名。等同于。等同于struct stu
9、dent9.1.2 结构体变量结构体成员也可以是一个已经定义好的结构体类型结构体成员也可以是一个已经定义好的结构体类型struct student char stuno8; char name20; char sex; float score; char addr30;;出生日期出生日期struct date int month; int day; int year;struct date birthday; 结构体类型的几点说明例 struct student int num; char name20; struct date int month; int day; int year; bi
10、rthday; stu;numnamebirthdaymonthdayyear结构体可嵌套定义结构体可嵌套定义 如何区分结构体类型和结构体变量的概念如何区分结构体类型和结构体变量的概念类型:不分配内存;与int等地位一样 变量: 分配内存类型:不能赋值、存取、运算; 变量: 可以(2) 结构体类型中的成员名可以与程序中的变量名相同,但二者不代表同一对象。(3) 对结构体变量中的成员(即“域”),可以单独使用,它的作用与地位相当于普通变量。1.下面结构体的定义语句中,错误的是b a)struct ord int x;int y;int z; struct ord a; b)struct ord
11、int x;int y;int z; struct ord a; c)struct ord int x;int y;int z; a; d)struct int x;int y;int z; a;2. 以下叙述中错误的是a a)可以通过typedef增加新的类型 b)可以用typedef将已存在的类型用一个新的名字来代表 c)用typedef定义新的类型名后,原有类型名仍有效 d)用typedef可以为各种类型起别名,但不能为变量起别名练习如:如: struct student char stuno8; char name20; char sex; char addr20; a=10101,l
12、i lin,m,123 beijing road;和其他类型变量一样,对结构体变量可以和其他类型变量一样,对结构体变量可以在定义在定义时指定初始值时指定初始值。9.1.3 结构体变量的初始化不能少!不能少!struct student b = a ;同类型结构体变量同类型结构体变量间可以赋值!间可以赋值!9.1.4 结构体变量成员的引用一般形式为:一般形式为: 结构体变量名结构体变量名.成员名成员名 结构体指针变量名结构体指针变量名-成员名成员名引用规则: 除了同类型结构体变量间可以直接引用赋值外, 结构体变量不能整体引用不能整体引用,只能引用变量成员只能引用变量成员 通过通过结构体变量名结构
13、体变量名引用结构体变量引用结构体变量struct student char stuno8; char name20; char sex; int age; float score; char addr30;;struct student stu1,sut2;如:为如:为stu1变量赋值:变量赋值:学号为:学号为:“20091021”;年龄为:年龄为:19分数为:分数为:523.5strcpy(stu1.stuno,20091021);stu1.age=19;stu1.score=523.5;9.1.4 结构体变量成员的引用一般形式为:一般形式为:结构体变量名结构体变量名.成员名成员名scanf
14、(“%s”,stu1.stuno);scanf(“%d”,&stu1.age);scanf(“%f”,&stu1.score);9.1.4 结构体变量成员的引用 通过通过结构体的指针变量结构体的指针变量引用结构体变量引用结构体变量一般形式为:一般形式为:指针变量名指针变量名-成员名成员名struct student char stuno8; char name20; char sex; int age; float score; char addr30;;struct student stu1,*p_stu;结构体结构体变量变量结构体指结构体指针变量针变量如:为如:为p_stu指向的结指向的结
15、构体变量赋值:构体变量赋值:学号为:学号为:“20091021”;年龄为:年龄为:19分数为:分数为:523.5p_stu = &stu1; /建立指向strcpy(p_stu-stuno,20091021);p_stu-age=19;p_stu-score=523.5;根据结构体成员引用的方式,对结构体变量中的根据结构体成员引用的方式,对结构体变量中的各个成员各个成员分别进行分别进行输入和输出。输入和输出。如:如: struct student long int num; char name20; char sex; char addr20; a;例例2 程序编写程序编写9.1.4 结构体变量成员的引用如:如: struct student long int num; char name20; char sex; char addr20; a=10101,“li lin”,m, “123 beijing road” ;a.num=10010; a.num=10010; 对对printf(“%sn”,a); printf(“%sn”,a); 不对不对b=a; b=a; 对对struct student b;struct student b;b.num+; b.num+; 对对#include int main() struct date int month; int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中班健康活动:我的营养餐
- 护理查房分类及方法
- 压力释放培训
- 红酒定制知识培训课件
- 酒店餐饮服务仪容仪表培训
- 产品陈列的培训课件
- 职工培训晋升发展
- 学前教育毕业论文选题有哪些
- 高中化学实验装置图总结
- 教师语文论文
- 小学《科学》期末测评方案
- GB 18613-2006中小型三相异步电动机能效限定值及能效等级
- 2023年湘西市(中小学、幼儿园)教师招聘笔试题库及答案解析
- 公司企业实习鉴定表格
- 锁骨下动脉窃血综合征 (2)PPT
- 大学毕业生离校退宿申请表模板
- 2022年人教八级下英语单词英译汉
- 大班社会《爱发脾气的菲菲》课件
- 【海外华文文学】期末考试复习提纲
- 化工进展稿件编辑、排版体例格式
- 美丽乡村片区内监理规划范本
评论
0/150
提交评论