C大学基础教程zhou.ppt
文本预览下载声明
北京科技大学计算机系 C++大学基础教程 第5章 数组 北京科技大学 计算机系 数组基本概念 数组是具有一定顺序关系的若干相同类型变量的集合。 组成数组的变量称为该数组的元素。 数组元素都有相同的变量名(数组名),但是有不同的下标。 数组属于构造类型 一维数组的定义与引用 一维数组的定义 类型说明符 数组名[ 常量表达式 ]; 例如: int a[10]; 1) a 为整型数组名; 2)a数组有10个元素,每个元素都是整数数据:a[0]...a[9] 一维数组的存储顺序 一维数组的定义与引用 注意 在使用数组元素时需要注意: ?数组元素的下标表达式其结果必须正整数(≥0)。 ?数组元素的下标值从0开始,不得超过声明时所定义的上界。 数组的下标 数组元素的下标是数组元素到数组开始地址的偏移量。 第1个元素的下标为0,其地址是数组的首地址,第2个元素的下标为1,偏移量距离首地址是1个数组元素大小,依次类推。 因此,数组元素是一系列大小相同的连续项,每项到公共基点(数组起始地址)的偏移量是固定的。 错误的数组定义语句 void VoidArray[10]; //void不可以做数组类型 int a=9; float floatArray[a]; //数组的长度不可以是变量 char charArray[1.5+1.5]; //3.0不是整数 例5.1 定义一个10个整数的数组 解:以ARRAY命名的数组,用100至109对数组元素赋值,并对其求和。需要在一个循环中使用数组。这是使用数组最经常的方式。 void main() { int ARRAY [10]; int sum=0; for (int i=0;i10;i++) { ARRAY[i]=100+i; sum+= ARRAY[i]; } } 注意 不能直接把一个数组赋给另一个数组。假设要将数组total_sales的值拷贝到数组saved_sales中,使用下面的赋值方法就是错误的: saved_sales =total_sales; //error 应使用一个循环语句将total_sales中的元素的值逐个赋给数组saved_sales中的每个元素。如下面的代码所示: for (int i=0;iARRAY_SIZE;i++) saved_sales[i] =total_sales[i]; 一维数组的初始化 可以使数组得到初值: 在声明数组时对数组元素赋以初值。例如:int a[10]={0,1,2,3,4,5,6,7,8,9}; 可以只给一部分元素赋初值。其他元素自动赋值为0例如:int a[10]={0,1,2,3,4}; 在对全部数组元素赋初值时,可以不指定数组长度。长度为初值的个数。 例如:int a[ ]={1,2,3,4,5} 等价于 int a[5]={1,2,3,4,5} 大括号的使用 通过使用大括号,可初始化任何一种类型的数组。 例如,要记录前三年的销售总额,则可以如下定义并初始化一个数组: double sales[]= {4323.43,122355.32,343324.96} 注意:上面这种使用大括号来初始化数组的方法只能在定义数组时使用。在数组定义之后,就不能用这种方法了,而只能逐个元素地赋值。 double sales[3]; sales= {4323.43,122355.32,343324.96} 全局数组初始化 C++自动将全局数组变量中的所有元素初始化为0或null。 如果未赋初值,那么一个全局的字符数组中的所有元素将为null(空),一个全局的数字数组中的所有元素将为0。 程序中应尽量限制全局数组变量的使用。如果要用,也最好在程序中用语句将其显式初始化为0,以明确表示编程者的意图。 错误例子 例如下面的代码对数组进行初始化是错误的: int array1[5]={0,1,2,3,4,5}; //error初始化值个数多于数组元素个数 int array2[5]={, , 1, 2, 3 }; //error不能加入“,”来跳过不赋值的元素。 int array2[5]={0,,2,3,4}; //error不能加入“,”来跳过不赋值的元素。 int array3[5]={ }; //error语法格式错误 例5.2初始化全局和局部数组 #include iostream using namespace std; int array1[5]={1,2,3}; static int array2[5]={1}; void main() { int a
显示全部