C++程序设计基础第四章:数组
4.1一维数组
在计算机中,一个数组在内存中占有一片连续的存储区域,C++的数组名就是这块存储空间的地址。数组的每个元素都用下标变量标识。数组要求先定义后使用。
4.1.1一维数组定义与初始化
一维数组的说明格式:
类型 标识符[表达式];
其中,标识符是用户自定义的数组名;[]是数组类型符,用于说明表示符的类型;类型说明数组元素的类型,可以是系统提供的基本类型,也可以是用户自定义的数据类型;表达式为整型表达式,用于指定数组元素的个数,即数组长度。一维数组只有一个下标表达式,对应于一个数学向量。
数组:具有一定顺序关系的若干相同类型数据的集合,
为构造数据类型之一。
数组名:为该数据集合起的一个名字。
数组元素:组成数组的数据。属同一数据类型,用数组
名和下标确定。即编译程序要确定数组的大小,所以类型符必须已经定义,下标表达式也必须有确定的值,不能为变量名,也不能为浮点型表达式。
例如: long int array1[3.2] //不对,下标表达式不能为浮点数;
double array2[max] //不对,下标表达式不能为变量。
给定常数的个数不能超过数组定义的长度,如果给定常数的个数不足,则系统对其余元素初始化为0。
只有定义静态数组,C++才会自动把各元素值初始化为0。
在for循环语句中,表达式sizeof(c)/sizeof(int)用于计算数组元素的个数。
(1)初始化是指在定义数组时,为数组元素赋初值
(在编译阶段使之得到初值)
初始化方式
说明:
数组不初始化,其元素值为随机数
可以只给部分数组元素赋初值,其余的自动赋以0
值
当全部数组元素赋初值时,可不指定数组长度
inta[5]={1,2,3,4,5};
等价于: a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;
如inta[5]={6,2,3};
等价于:a[0]=6;a[1]=2;a[2]=3;a[3]=0;a[4]=0;
inta[]={1,2,3,4,5,6};
编译系统根据初值个数确定数组长。
例如:用简单选择法对十个数排序
4.1.2一维数组访问
C++提供两种方式访问数组:下标方式和间址方式。
下标方式:数组名[表达式]
C++不会对数组元素的下标表达式作界限检查,操作出界时可能会引起意想不到的错误,这值得程序员注意。
例2:用冒泡法对n个数排序(由小到大)
总结:用数组名做函数参数的说明:
1)如果函数实参是数组名,形参也应为数组名,形参不能声
明为普通变量。实参数组与形参数组类型应一致,如不一致,
结果将出错。
(2)数组名代表数组首元素的地址,并不代表数组中的全部
元素。
(3)用数组名作函数实参时,不是把实参数组的值传递给形参,
而只是将实参数组首元素的地址传递给形参。在调用函数时,
将实参数组首元素的地址传递给形参数组名。这样,实参数
组和形参数组就共占同一段内存单元。改变形参数组元素的
值将同时改变实参数组元素的值。
(4)用变量作函数参数时,只能将实参变量的值传给形参变量,
在调用函数过程中如果改变了形参的值,对实参没有影响,
即实参的值不因形参的值改变而改变。