内容正文:
第10章 类型 DIY
—结构体和共用体
C语言教程
第10章
10.1技能1:在程序中使用结构体类型
10.2技能2:在程序中使用共用体类型
C语言教程
C语言教程
【概要】
在程序设计中,把一些关系密切而数据类型不同的数据组织在一起,并为其命名一个名字,这类数据称为结构体。共用体是一种类似于结构体的构造型数据类型,它准许不同类型和不同长度的数据共享同一块存储空间。
它们都是“构造”而成的数据类型,在说明和使用之前必须先定义,也就是类型 DIY。
第10章 类型 DIY
—结构体和共用体
C语言教程
10.1 技能1
10.1.1 结构体(即“结构”)的概念
在日常生活中,常会遇到一些需要填写的登记表,如住宿表、成绩表、通讯地址等。在这些表中,填写的数据是不能用同一种数据类型描述的,在住宿表中通常会登记上姓名、性别、身份证号码等项目;在通讯地址表中我们会写下姓名、邮编、邮箱地址、电话号码、E - mail等项目。这些表中集合了各种数据,无法用前面学过的任一种数据类型完全描述,因此C引入一种能集中不同数据类型于一体的数据类型—结构体类型。结构体类型的变量可以拥有不同数据类型的成员,是不同数据类型成员的集合。
结构体:是将若干个类型相同或不同的数据组合成一个有机的集合。“结构体”是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。结构体既是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义函数一样。
C语言教程
10.1.2 结构体类型的定义
【引例】
住宿表、成绩表、通讯地址表用C提供的结构体类型描述如下:
成绩表:
struct score
{
char grade[20]; /* 班级*/
long number; /* 学号*/
char name[20]; /*姓名*/
float os; /*操作系统*/
float datastru; /* 数据结构*/
float compnet; /* 计算机网络*/
} ;
C语言教程
这一系列对不同登记表的数据结构的描述类型称为结构体类型。由于不同的问题有不同的数据成员,也就是说有不同描述的结构体类型。也可以理解为结构体类型根据所针对的问题其成员是不同的,可以有任意多的结构体类型描述。
C语言教程
【知识点】
1. 定义结构体类型的一般格式为:
struct 结构体名
{
类型 结构成员名
类型 结构成员名
...
};
C语言教程
【知识点】
2.结构体名:由用户命名,是类型的标识符而不是变量 名。也可以省略结构体名。
3. 结构体成员:构成结构体的每一个类型变量称为结构体成员。 它象数组的元素一样, 但数组中元素是以下标 来访问的, 而结构 体是按变量名字来访问成员的。
4. 结构体成员名的命名规则与变量相同,并且允许与变量或其他结构体中的成员重名。
5. 结构体成员可以是简单类型、数组、指针或已说明过的结构体等。
6. 大括号外边的分号不可省略。
C语言教程
【典型例题】
例10.1 定义一个反映学生基本情况的的结构类型,用以存储学生的学号、姓名、性别、成绩。
struct stu
{
int num;
char name[20];
char sex;
float score;
};
C语言教程
10.1.3 结构体变量的定义、初始化和引用
一、 结构体类型变量的定义
结构体类型变量的定义与其它类型的变量的定义是一样的,但由于结构体类型需要针对问题事先自行定义,所以结构体类型变量的定义形式就增加了灵活性,共有三种形式。
C语言教程
【知识点】
定义结构体变量的三种方法。
1. 先定义结构体类型,再定义结构体变量。
2. 在定义结构体类型的同时定义结构体变量。
3. 直接定义结构体