第6章 数组 本章学习目标 迄今为止,我们使用的都是属于基本类型(整型、字符型、实型)的数据, C语言还提供了构造类型的数据,包括数组类型、结构体类型、共用体类 型。基本类型数据按一定规则组成了构造类型数据。通过本章的学习,读 者应该掌握以下内容: 一维数组 二维数组 字符数组 多维数组
本章学习目标 迄今为止,我们使用的都是属于基本类型(整型、字符型、实型)的数据, C语言还提供了构造类型的数据,包括数组类型、结构体类型、共用体类 型。基本类型数据按一定规则组成了构造类型数据。通过本章的学习,读 者应该掌握以下内容: •一维数组 •二维数组 •字符数组 •多维数组 第 6 章 数 组
6.1一维数组 6.1.1相关知识 数组是一种十分有用的数据结构,许多问题不用数组几乎难 以解决。一维数组是数组应用的基础。 数组是同一数据类型的有序数据的集合。构成数组的单元称 为数组元素,数组元素的序号称为下标。C语言中数组的 下标从0开始计数,最大下标比数组元素个数少1。比如数 组a有5个整数元素,a[0]是它的第0号元素(第1个元素), a[4]是它的第4号元素(第5个元素),它在内存中
6.1.1 相关知识 数组是一种十分有用的数据结构,许多问题不用数组几乎难 以解决。一维数组是数组应用的基础。 数组是同一数据类型的有序数据的集合。构成数组的单元称 为数组元素,数组元素的序号称为下标。C语言中数组的 下标从0开始计数,最大下标比数组元素个数少1。比如数 组a有5个整数元素,a[0]是它的第0号元素(第1个元素), a[4]是它的第4号元素(第5个元素),它在内存中 6.1 一维数组
的形式如图6-1所示。 数组名 a则和 1 〔数组中所有 a[1]和 34 元素都有相和 a☒ -5 同的名字) a[3☒和 67和 a[4 92 木 数组中元素的序号
的形式如图6-1所示
数组名a[0]1(数组中所有a[1]34元素都有相a[2]-5同的名字) a[3]67a[4]9↑数组中元素的序号 图6-1数组在内存中的形式 数组元素的序号用方括号括起来。方括号又被称为下标运算 符,具有最高的优先级。下标必须是一个整数,如a[2], 或一个整型表达式,如i=1,j=2,则a[i+j]就表示a[3]。 带下标的数组名在这里就相当于该类型的一个变量,因此可 以作为赋值语句的左值,如a[4]+=3;数组的维数是数组 元素下标的个数。根据数组的维数可以将数组分为一维、 二维、三维、多维数组
数组名a[0]1(数组中所有a[1]34元素都有相a[2]-5同的名字) a[3]67a[4]9↑数组中元素的序号 图6-1 数组在内存中的形式 数组元素的序号用方括号括起来。方括号又被称为下标运算 符,具有最高的优先级。下标必须是一个整数,如a[2], 或一个整型表达式,如i=1,j=2,则a[i+j]就表示a[3]。 带下标的数组名在这里就相当于该类型的一个变量,因此可 以作为赋值语句的左值,如a[4]+=3;数组的维数是数组 元素下标的个数。根据数组的维数可以将数组分为一维、 二维、三维、多维数组
6.1.2程序范例 通过下例程序学习一维数组变量的定义、初始化、引用。 1.范例一 任务:定义一个数组,使a[0]到a[7]的值为0~7,然后输出。 源程序: #include main() { int i,a[8]; 一维数组的定义*/
6.1.2 程序范例 通过下例程序学习一维数组变量的定义、初始化、引用。 1.范例一 任务:定义一个数组,使a[0]到a[7]的值为0~7,然后输出。 源程序: #include main() { int i,a[8]; /*一维数组的定义*/
for(i=0;i<=7;i++) a=i; *一维数组的初始化* for(i=0;i<=7;i++) printf("%d",a[叮);*一维数组的引用*/ } 运行结果如下: 01234567 程序说明:上述程序首先定义一个一维数组,再对数组初始 化,最后输出一维数组
for(i=0;i<=7;i++) a[i]=i; /*一维数组的初始化*/ for(i=0;i<=7;i++) printf("%d ",a[i]); /*一维数组的引用*/ } 运行结果如下: 0 1 2 3 4 5 6 7 程序说明:上述程序首先定义一个一维数组,再对数组初始 化,最后输出一维数组
2.范例二 任务:定义一个数组,使a[0]到a[9]的值为1、3、5.19,然 后按逆序输出。 源程序: #include main() { int i,a[10]; for(i=0;<=9;i++) a[i=1+2*i;
2.范例二 任务:定义一个数组,使a[0]到a[9]的值为1、3、5.19,然 后按逆序输出。 源程序: #include main() { int i,a[10]; for(i=0;i<=9;i++) a[i]=1+2*i;
for(i=9;i>=0;i-) printf("%d ",ali]); } 运行输出: 191715131197531 程序说明:程序定义整型数组a,有10个元素,通过for循环 对数组元素赋以连续的奇数值:1,3,5,19,然后 以反序输出。在第一个fo循环头的第二个表达式中写上 数组的最大下标可以预防“丢一错误”,即最好写成i<=9 或i<10,而不要写成i<9这种形式。 6.1.3知识归纳
for(i=9;i>=0;i-) printf("%d ",a[i]); } 运行输出: 19 17 15 13 11 9 7 5 3 1 程序说明:程序定义整型数组a,有10个元素,通过for循环 对数组元素赋以连续的奇数值:1,3,5,.,19,然后 以反序输出。在第一个for循环头的第二个表达式中写上 数组的最大下标可以预防“丢一错误”,即最好写成i<=9 或i<10,而不要写成i<9这种形式。 6.1.3 知识归纳
1.一维数组的定义(先定义后使用) 数组要占用内存空间,只有在声明数组元素的类型和个数之 后编译器才能为该数组分配合适的内存,这种声明就是数 组的定义。一维数组中的各个数组元素是排成一行的一组 下标变量,用一个统一的数组名来标识,用一个下标来指 示其在数组中的位置,下标从0开始。一维数组通常和一 重循环相配合,对数组元素进行处理。 对一维数组来说,其定义的一般形式为: [] 其中,类型标识符指数组元素的类型;数组名是个标识符, 是数组类型变量;整型常量表达式表示该数组的大小,应 该大于0
1.一维数组的定义(先定义后使用) 数组要占用内存空间,只有在声明数组元素的类型和个数之 后编译器才能为该数组分配合适的内存,这种声明就是数 组的定义。一维数组中的各个数组元素是排成一行的一组 下标变量,用一个统一的数组名来标识,用一个下标来指 示其在数组中的位置,下标从0开始。一维数组通常和一 重循环相配合,对数组元素进行处理。 对一维数组来说,其定义的一般形式为: [] 其中,类型标识符指数组元素的类型;数组名是个标识符, 是数组类型变量;整型常量表达式表示该数组的大小,应 该大于0
例如语句:inta[10] 定义了一个数组a,a是有10个整型元素的数组名,元素个数 为10,数组元素类型为整型。 说明: (1)数组名:按标识符规则。本例a就是数组名。 (2)整型常量表达式:表示数组元素个数(数组的长度) 可以是整型常量或符号常量,不允许用变量。整型常量表 达式在说明数组元素个数的同时也确定了数组元素下标的 范围,下标从0开始整型常量表达式-1(注意不是1~整 型常量表达式)。C语言不检查数组下标越界,但是使用 时,一般不能越界使用,否则结果难以预料(覆盖程序 区一程序飞出,覆盖数据区一数据覆盖破坏,操作
例如语句:int a[10]; 定义了一个数组a,a是有10个整型元素的数组名,元素个数 为10,数组元素类型为整型。 说明: (1)数组名:按标识符规则。本例a就是数组名。 (2)整型常量表达式:表示数组元素个数(数组的长度)。 可以是整型常量或符号常量,不允许用变量。整型常量表 达式在说明数组元素个数的同时也确定了数组元素下标的 范围,下标从0开始~整型常量表达式-1(注意不是1~整 型常量表达式)。C语言不检查数组下标越界,但是使用 时,一般不能越界使用,否则结果难以预料(覆盖程序 区—程序飞出,覆盖数据区—数据覆盖破坏,操作