实验10结构体及共用体
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十结构体与共用体
实验目的:
1.结构体类型变量的定义和引用
2.结构体类型数组的概念和引用
3.指向结构体类型的指针的引用
4.共用体的定义及引用
5.链表的概念,会实现链表的创建
实验相关内容简介:
实结构体是个能够包含不同数据类型的一个结构,是一种能够自己定义的数据类型,通常可用来定义表示整体信息的一条记录。
1.结构体类型定义
struct 结构类型名
{ 数据类型数据项1;
数据类型数据项2;
……
数据类型数据项n;
}; //注意此处定义时分号不能少
其中的结构类型名表明了一种新的构造数据类型,其中的数据项称为结构体的数据成员。
2.结构体变量定义
结构体变量定义的形式通常有如下三种方法:
(1)先定义结构体类型,再定义结构体类型变量:
struct date
{ int day;
int month;
int year;
};
struct date time1,time2;
(2)定义结构体类型同时定义结构体类型变量:
struct stu
{long int num;
char name[20];
char sex;
float score;
struct date time1; //此处结构的成员也是个结构体
}stu1,stu2;
(3)直接定义结构体类型变量:
struct
{char name[20]; / *通讯录姓名* /
char sex; / *性别* /
long telephone; / *电话* /
char address; / *住址* /
} person1,person2; / *定义该结构体类型变量* /
该定义方法由于无法记录该结构体类型,所以除直接定义外,不能再定义该结构体类型变量。
3.结构体变量成员的引用
结构体变量的成员引用形式为:结构体变量名.成员名
如time1.year=1980;是给结构体变量time1中的year变量赋上年份值;stu1.time1.year=1985;则是给student中time1成员中的year成员赋值,4.结构体数组的定义
struct 结构体类型名结构体变量名[数组长度];
如:struct stu std[3];则std是一个包含3个结构体的结构体数组。
5.结构体类型的指针
(1)指向结构体变量的指针
struct stu stu1,*p;
p=&stu1; 此处将结构体stu1的地址赋给了p,p成为了指向结构体stu1的指针变量。
(2)指向结构体类型的指针引用
引用形式:指针变量->成员名
如p->num=10 //此表达式的效果相当于stu1.num=10;
(3) 指向结构体数组的指针
struct stu stu1[3],*p;
p=stu1; //此处变量名前不需加取址符号,因stu1本身就代表一个地址
(4)指向结构体数组的指针引用
引用方式较为灵活:①指针变量[下标].成员名如:p[i].num
②(指针变量+i)->成员名
#include "stdio.h"
struct stu
{long int num;
char name[20];
char sex;
float score;
}stu1[3],*p;
main()
{int i;
p=stu1;
i=2;
p[2].num=15; //利用数组下标方法给结构体成员赋值
(p+3)->num=20; //利用结构体指针为结构体成员赋值
printf("%d %d",stu1[2].num,stu1[3].num);
}
6.共用体类型
union 共用体类型名
{ 数据类型 数据项1;
数据类型 数据项2;
… …
数据类型 数据项n ;
}; //注意此处定义时分号不能少
共用体又称为联合体,它和结构体的不同之处是,联合体的所有成员占用一个公共的空间,而共用体所占的空间应该是各个成员存储空间之和。
如
union stu
{long int num; //4字节
char name[20]; //20字节
char sex; //1字节
float score; //4字节
}
联合体stu 所占的空间是20字节。
7.链表处理-结构指针的应用
链表是一种常见的重要的数据结构,采用动态的分配方法为一个结构体分配内存空间,可使用malloc 函数分配。构成链表的每一个结构体被称为结点。
在动态分配时,每个结点可以是不连续的(每个结点内是连续的),结点间的联系通过指针来实现,即在结点结构中定义一个成员项用来存放下一结点的首地址,这个用于存放地址的成员,常称为指针域。可在第一个结点的指针域存放第二个结点的首地址,如此串下去直到最后一个结点。最后一个结点因无后续连接,其指针域可赋为NULL,此种连接方式,如同一条环接一环的链子,在数据结构中称之为“链表”,如图8.1。
图8.1 简单的单项链表示意图
实验内容及步骤
【例8.1】结构体变量的定义及使用
定义一个结构变量student ,用于存储和显示一个学生的基本情况。程序如下:
#include "stdio.h"