C语言用户自定义数据类型
C语言用户自定义数据类型
11
8.1.2结构类型数据对象的定义及初始化
1.结构类型数据对象包括一般变量、指针、数组等,对 于成为结构变量、结构指针、结构数组等可以在说明语句中 用已定义的结构类型定义结构数据对象,也可以在定义结构 类型的同时定义结构数据对象。
struct date {
int month; int day; int year; ; };
结构类型的几点说明
(4)允许省略结构类型名,即允许定义无类型名的结构类
型。 struct
无名的结构类型
{
必须后随结构变量
int year;
(如birthday)的定义,
int month;
并且仅能一处使用,
int day;
这种形式通常用于内
} birthday;
嵌在结构类型中的结
构类型。
(5)可以用sizeof运算符来计算结构类型的长度(字节数) 例如:printf(“%d”,sizeof(struct Student)); 结果为18
(2)结构是由若干个数据项组成,每个数据项都属于一种 已有定义的类型。每一个结构成员都不是独立的,它不是一 般的变量,而是跟结构联系在一起。
struct Student { int number
char name[9];
int age; char sex;
int age; char sex; };
同名 的 age 和sex 均 不会有命名冲突问题
第8章 用户自定义数据类型
C语言用户自定义数据类型
1
本章内容
8.1 结构类型及其变量的定义 8.2 结构数组 8.3 结构和指针 8.4 联合类型 8.5 枚举类型
C语言用户自定义数据类型
2
8.1.1结构类型的定义
一. 结构类型的概念
前面的我们学习了一些简单数据类型(整型、实 型、字符型)的定义和应用,还学习了数组(一维、 二维)的定义和应用,这些数据类型的特点是:当定 义某一特定数据类型,就限定该类型变量的存储特性 和取值范围。
在日常生活中,我们常会遇到一些需要填写的登 记表,如成绩表、通讯地址、员工信息等。其数据类 型可能由性质不同的成员组成。
C语言用户自定义数据类型
3
结构类型的概念
number name Sex Li Fang F Lin Hong F Wu Qiang M Li Jun M Zhang Xia F
department age Informatio 18 Personnel 16 Technical 18 Personnel 17 Technical 17
struct staff {
char number[8]; struct date birthday; char sex; };
定义了结构类型之后, 还必须定义结构类型变量, 类型与变量 是不同的概念。
C语言用户自定义数据类型
12
结构类型数据对象的定义及初始化
2.结构类型变量的三种定义方式 (1) 在说明结构类型的同时, 也定义了结构类型变量 例如: struct book { int num; char name[60]; float price; } book1, books[3];
char name[9]; int age; char sex; };
struct Student { char name[9];
struct Birthday { int year;
int month; int day; } birthday; char sex; };
C语言用户自定义数据类型
10
C语言用户自定义数据类型
5
二. 结构体类型及结构体变量
1.结构体类型说明的一般形式 struct [标识符]
{ 结构成员列表;
};
说明: (1) struct是关键字,声明要定义一个结构类型,结构类
型名用标示符命名,要“见名知义”; (2)成员列表给出n个成员声明,成员可以基本类型变量、
数组,也可以是另一结构类型变量等,对每个成员必须作类 型说明,成员之间用分号分隔;
C语言用户自定义数据类型
6
no
独立的变量:
name
sex
age
classno
grade
数据项之间无关联
no
name
sex
age
classno grade
数据项为一个整体
Hale Waihona Puke struct student
{ char no[9];
//学号
char name[20]; //姓名
char sex;
//性别
unsigned int age; //年龄
C语言用户自定义数据类型
4
结构类型的概念
我们可以创建如下的结构类型: struct staff 其中staff由用户命名 { char number[8]; char name[10]; char sex; int age; char dep[20]; float wage[2]; };
以上定义了一个结构类型struct staff(与int 同 地位),它包含了number、name、sex、age、dep、 wage等不同类型的数据项。
unsigned int classno; //班级
float grade;
//成绩
}
C语言用户自定义数据类型
学生的基本信息, 包括学号、姓名、 性别、年龄、班级、 成绩等数据项。 这些数据项描述了 一个学生的几个不 同侧面。
7
2.结构类型的几点说明
(1)对于结构类型,系统不会为之分配内存。只有在定义 了结构变量后,系统才会分配内存单元给变量。
C语言用户自定义数据类型
8
结构类型的几点说明
(3)结构类型可以嵌套定义。所谓嵌套定义是指在一 个结构类型中可以包含另一个或一些结构类型,通 常用于结构类型的成员是一个结构变量的场合。
birthday
name
sex
month day year
C语言用户自定义数据类型
9
结构类型的几点说明
struct Student { int number
wage1 wage2
850 780 900 760 950 790 880 760 870 795
上表中数据是由员工的工作证号(number)、姓名(name)、 性别(sex) 、年龄(age) 、部门( department) 、工资(wage) 等数据项组成的,逻辑上相关的数据。
在C语言中,将这种由多个不同类型的数据项组合在一起形成 的数据类型,称为结构体类型。