c014结构体和公用体.ppt_第1页
c014结构体和公用体.ppt_第2页
c014结构体和公用体.ppt_第3页
c014结构体和公用体.ppt_第4页
c014结构体和公用体.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第14讲 结构体和共用体,数学计算机科学系,第14讲 结构体,本讲主要内容 一、结构体 1. 结构体类型 2. 结构体变量 3. 结构体数组 4. 结构体指针 二、共用体,一、结构体类型,结构体类型概述 表13-1 学生信息表,表中的每一行反映了一个学生的综合信息,是一个学生的整体数据。每一个数据,都由多个数据项组成,包括学生的学号、姓名、性别、年龄、成绩、地址等,各数据项的数据类型也不尽相同。要表示这样一个组合数据,仅靠单一的任何一种数据类型,如整型、实型、数组等,都是不能实现的。,一、结构体类型,“结构体”技术的基本过程: 针对具体的组合数据,定义专门的结构体数据类型; 使用定义好的数据类

2、型,定义要使用的结构体变量; 使用定义的结构体变量表示有关数据。,一、结构体类型,结构体类型的定义 定义结构体类型的一般格式如下: Struct 结构体名 成员表 ; 如右边是对学生组合 数据的结构体类型 定义:,struct student int num; /* 学号 */ char name20; /* 姓名 */ char sex; /* 性别 */ int age; /* 年龄 */ float score; /* 成绩 */ char addr30; /* 地址 */ ;,一、结构体类型,结构体类型定义说明 “结构体名”是用户定义的结 构体的名字,在以后定义结构体变 量时,使用该名

3、字进行类型标识。 “成员表”是对结构体数据中每一个数据项的变量说明,其格式与说明一个变量的一般格式相同,如下: 数据类型名 成员名; “struct”是关键字,“struct 结构体名”是结构体类型标识符,在类型定义和类型使用时“struct”都不能省略。 结构体名称可以省略,此时定义的结构称为无名结构。 整个定义作为一个完整的语句用分号结束。 结构体成员名允许和程序中的其他变量同名,二者不会混淆。,struct student int num; /* 学号 */ char name20; /* 姓名 */ char sex; /* 性别 */ int age; /* 年龄 */ float

4、score; /* 成绩 */ char addr30; /* 地址 */ ;,一、结构体类型,结构体的嵌套 C语言结构体成员的数据类型既可以是简单的数据类型,也可以是复杂的数据类型,成员也可以是一个结构体。当结构体的成员又是结构体时,称为结构体的嵌套。如右图 struct stud结构如下表所示。,struct date int month; int day; int year; ; struct stud int num; char name20; char sex; int age; struct date birthday; char addr30; stud1,stud2;,二、结构

5、体变量,结构体变量定义 先定义结构体类型, 再定义结构体变量。 一般格式如下: struct 结构体名称 结构变量名; 如上面已定义了一个结构体类型student,可以用它来定义变量: struct student student1,student2;,struct student int num; /* 学号 */ char name20; /* 姓名 */ char sex; /* 性别 */ int age; /* 年龄 */ float score; /* 成绩 */ char addr30; /* 地址 */ ; struct student student1,student2;,二

6、、结构体变量,结构体变量定义 在定义结构体类型的同时 定义结构体变量。 一般格式如下: struct 结构体名 成员表 结构体变量1, 结构体变量2,结构体变量n;,struct student int num; /* 学号 */ char name20; /* 姓名 */ char sex; /* 性别 */ int age; /* 年龄 */ float score; /* 成绩 */ char addr30; /* 地址 */ student1,student2;,二、结构体变量,结构体变量定义 不定义结构体类型名,直 接定义结构类型变量。 一般格式如下: struct 成员表 结构体变

7、量1, 结构体变量2,结构体变量n;,struct int num; /* 学号 */ char name20; /* 姓名 */ char sex; /* 性别 */ int age; /* 年龄 */ float score; /* 成绩 */ char addr30; /* 地址 */ student1,student2;,二、结构体变量,结构体成员引用 结构作为若干成员的集合是 一个整体,但在使用结构时, 不仅要对结构整体进行操作, 而且更多的是要访问结构中的每个成员。在程序中使用结 构体成员的方法为: 结构体变量名.成员名称 如,当使用student1变量的age成员时,用如下方式:

8、 student1.age “.”是结构体成员运算符,“.”操作的优先级在语言中是最高的,其结合性为从左到右。,struct student int num; /* 学号 */ char name20; /* 姓名 */ char sex; /* 性别 */ int age; /* 年龄 */ float score; /* 成绩 */ char addr30; /* 地址 */ student1,student2;,二、结构体变量,例13-1输入一个学生的一组数据,然后输出其姓名、年龄和地址。,#include stdio.h struct student int num; char nam

9、e20; char sex; int age; float score; char addr30; stu;,main() printf(Enter num,age,score:); scanf(%d,%d,%f,union int i; char ch; float f; u1,u2,u3;,五、共用体,共用体变量的引用 如:使用u5.i形式引用共用变量u5的成员i; 使用u5.ch形式引用共用变量u5的成员ch; 使用u5.f形式引用共用变量u5的成员f。,共用体数据特点 1共用体变量中的值是最后一次存放的成员的值。 2共用体变量不能初始化。 3共用体变量的地址和它的各成员的地址都是同一个

10、地址值,如&u1、&u.i、&u.ch、&u.f是相同的。,五、共用体,例16-1 分析以下程序的执行结果。 #include stdio.h union long i; int k; char m; char s4; part; main ( ) part.i=0 x12345678; printf(part.i=%lxn,part.i); printf(part.k=%xn,part.k); printf(part.m=%xn,part.m); printf(part.s0=%xt part.s1=%xn,part.s0,part.s1); printf(part.s2=%xt part.s3=%xn,part.s2,part.s3); ,结构体和共用体-小结,1结构体是一种新型的数据类型: 结构体数据类型不是系统固有的,它需要由用户自定义; 一个结构体数据类型是多个具有不同类型的不同成员的集合。 2“struct”是结构体数据类型的关键字。 3结构体变量的定义有3种方法: 先定义结构体类型,再定义结构体变量; 在定义结构体类型的同时定义结构体变量; 不定义结构体类型名,直接定义结构类型变量。 4引用结构体成员的方法主要有两种:使用结构体变量名引用结构体成员;通过指向结构体变量的指针引用结构体成员。 5结构体数组

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论