C语言程序设计实例教程课件10_第1页
C语言程序设计实例教程课件10_第2页
C语言程序设计实例教程课件10_第3页
C语言程序设计实例教程课件10_第4页
C语言程序设计实例教程课件10_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、第10章 结构体和共用体 在程序设计中,把一些关系密切而数据类型不同的数据组织在一起,并为其命名一个名字,这类数据称为结构体。 共用体是一种类似于结构体的构造型数据类型,它准许不同类型和不同长度的数据共享同一块存储空间。 10.1 结构体类型 10.2 共用体 第10章 结构体和共用体 在程序设计中,把10.1 结构体类型 结构体,是将若干个类型相同或不同的数据组合成一个有机的集合。 10.1.1 结构体类型定义 使用结构体变量前,要先定义该结构体类型,再定义结构体变量。结构体类型定义的一般格式为:10.1 结构体类型 结构体,是将 struct 结构体名 类型标识符 成员名列表 ; 类型标识

2、符 成员名列表 ; 类型标识符 成员名列表 ; ; 例如: struct student int snum ; char name10 ; char sex ; int age ; char addr40 ; ; struct 结构体名 10.1.2 结构体变量的定义、引用和初始化 1. 结构体变量定义 定义结构体变量有三种方法。 (1) 在定义结构体类型的同时定义结构体变量。 (2) 先定义结构体类型,再定义结构体变量。 (3) 直接定义结构体变量。 10.1.2 结构体变量的定义、引用和初始化 2. 结构体变量的引用 对结构体变量进行操作时,除了可以对相同类型的结构体变量进行整体赋值外,不

3、可以对一个结构体变量整体赋值。要对一个结构体变量进行操作,其引用的方式为: 结构体变量名.成员名 3. 结构体变量的初始化 与数组的初始化类似,结构体变量只能对外部和静态结构体变量初始化。初始化数据之间要用“,”隔开,不进行初始化的成员项要用“,”跳过。 2. 结构体变量的引用 10.1.3 结构体数组 有序数据的集合称为数组,结构体变量组合在一起称为结构体数组。其定义方式同一般数组一样,例如: struct student stu10 ; 这样就定义了一个包含有10个元素的结构体数组,其每个数组元素都是一个结构体类型的数据。 10.1.3 结构体数组 10.1.4 结构体的指针 1. 结构体

4、指针的定义及应用 定义结构体的指针,使该指针指向某一类型结构体变量或结构体数组的首地址。如定义一个struct student结构类型的指针: struct student *p1 , *p2 , stu1 , stu10 ; 要使其指向某一个变量,则必须给它赋值,例如: p1=&stu1 ; p2=stu ; p1指向结构体变量stu1的首地址,p2指向结构体数组stu的首地址。 10.1.4 结构体的指针 如需用结构体的指针访问结构成员,可以采用以下方式: (*指针名) . 成员名 在C语言中,采用“-”(减号、大于号)运算符来简化调用。例如,要访问指针p1指向的结构体变量的成员,可以采用

5、(*p1).snum,(*p1).name,(*p1).sex,(*p1).age,(*p1).addr也可以采用p1-snum,p1-name,p1-sex,p1-age,p1-addr。 如需用结构体的指针访问结构成员,可以 2. 用结构体指针作函数参数 可以通过传递结构体变量的成员及传递整个结构体变量或结构体数组的方法来传递数据,还可以通过结构体指针作为函数参数传递数据。 2. 用结构体指针作函数参数10.1.5 利用结构体变量构成链表 链表就是利用递归定义,使得由第一个结构体变量可以找到第二个结构体变量,也就是说如果知道链表的首地址,可以获得整个链表。由于链表的每一个节点的物理位置不是

6、固定的,所以需要以下函数来动态地分配空间及释放空间。 (1) malloc(size) 动态申请一个长度为size的连续空间,此函数返回一个指针,指向该空间的起始地址,如果错误则返回0。 (2) free(ptr) 释放ptr所指向的内存区。10.1.5 利用结构体变量构成链表 10.2 共用体 在程序设计中,采用共用体比使用结构体节省空间,但是访问速度慢。 10.2.1 共用体类型说明 公用体类型的说明与结构体类型的说明类似,方法如下: union 公用体名 类型标识符 成员名列表; 类型标识符 成员名列表; 类型标识符 成员名列表; ;10.2 共用体 在程序设计中,采用 公用体变量所占内

7、存的长度是成员中最长的长度,在这样一个空间中可以存放不同类型和不同长度的数据,而这些数据都是以同一地址开始存放的。 公用体变量所占内存的长度是成员中最长 例如,定义一个公用体其中包括整型、字符型、实型变量,这三种数据类型的成员共享同一块内存空间。 union unidata int i ; char ch ; float f ; d1 , d2 , d3 ; 这样d1、d2、d3就是一个公用体变量。由于在该结构体类型中实型变量占有内存单元4个字节,是最长的成员,所以公用体变量d1、d2、d3都分配4个字节的内存单元。 10.2.2 共用体变量的定义、引用 共用体变量的定义同结构体类型变量的定义可以有三种定义方法。其引用也同结构体类型变量的引用,是使用运算符“.

温馨提示

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

评论

0/150

提交评论