第5章 C51的数据结构
第5章 C51的数据结构
• 在C51语言中,除了整型(int)、浮点型
(float)、字符型(char)、无值型(void)几
种基本数据类型外,还有以这些基本数据类型为
基础而构造成的较复杂的数据结构,即聚合数据
类型(aggregate types)。本章将着重介绍C51
中的几种聚合类型数据结构的定义及用法,包括
数组、指针、结构、联合(共用体)、枚举、位
域和自定义数据类型。灵活利用这些数据结构可
以简化程序的设计。
5.1 C51的数组
• 数组是把若干具有相同数据类型的变量按有序的
形式组织起来的集合。其中,数组中的每个变量
称为数组元素。数组属于聚合数据类型。一个数
组可以包含多个数组元素,这些数组元素可以是
基本数据类型,也可以是聚合数据类型。
• 在C51语言中,按照数组元素所属的基本数据类
型,数组可分为数值数组、字符数组、指针数组、
结构数组等。其中,指针数组将在下文中讲解到
指针的部分再作介绍,结构数组将在下文中讲解
到结构的部分再作介绍。按照数组的维数,数组
又可分为一维数组、二维数组和多维数组。下面
就分别介绍数组的相关内容。
5.1.1 数组定义及数组元素
• 数组将多个相同类型的数据放在内存中连续的空间内存储,以便
于程序同时调用一批相关数据使用。数组与普通变量一样,要先
定义才能使用。在定义数组时,除了要注意数组本身的类型说
明,还要注意数组中的各变量的表示,即数组元素的表示。下面
分别介绍这两部分内容。
• 1.数组定义
• 在C51语言中,使用数组前必须先进行定义,即数组的类型说明。
数组定义的一般形式为:
• 类型说明符 数组名 [常量表达式],……;
• 2.数组元素表示
• 数组元素,即数组中的变量,是组成数组的基本单元。在C51中,
数组元素是变量,其标识方法为数组名后跟一个下标。数组元素
通常也称为下标变量。数组元素表示的一般形式为:
• 数组名[下标]
5.1.2 一维数组
• 一维数组是指只有一个下标标号的数组。一维数
组是一个由若干同类型变量组成的集合,引用这
些变量时可用同一数组名。一维数组在存放时占
用连续的存储单元,最低地址对应于数组的第一
个元素,最高地址对应于最后一个元素。
• 1.一维数组定义
• 2.一维数组初始化
a[0] a[1] a[2] a[3]
1 2 3 4
数组的构成
5.1.3 一维字符串数组
• 用一维数组来表示字符串是程序中很常见的用法。
下面就详细介绍如何定义和初始化一维字符串数
组,以及如何应用C51自带的字符串操作函数来对
字符串进行处理。
• 1.一维字符串数组定义
• 2.一维字符串数组初始化
• 3.字符串函数
5.1.4 二维数组
• 二维数组是包含两个下标标号的数组。二维数组
是最简单的多维数组,下面就介绍二维数组的定
义和初始化,以及在程序中使用。
• 1.二维数组定义
• 2.二维数组初始化
二维数组在内存中的存储
5.1.5 二维字符串数组
• 二维字符串数组是二维数组的一种特殊形式,其
数组元素为字符型。二维字符串数组的定义一般
形式如下:
• char 数组名[常量表达式1][常量表达式2];
• 其中,方括号中的“常量表达式1”定义了数组中
存放的字符串的个数,相当于数组的行数;“常
量表达式2”定义了数组中单个字符串的最大长
度;相当于数组的列数。二维字符串数组的声明
示例如下:
• char str[4][80];
5.1.6 多维数组
• 多维数组是指数组的维数大于二维的数组。在C51
中允许使用大于二维的数组,不同的编译环境限
制了维数最大取值。多维数组的一般说明形式如
下:
• 类型说明符 数组名[常量表达式1] [常量表达式
2]… [常量表达式n]
• 典型的多