&&&&&&&鸡啄米已经给大家讲了几种基本的控制结构、函数以及类与对象的知识,对于一般问题这些都可以解决了,但是我们在软件开发中难免要用到大型点的数据,相互之间有一定联系的数据,比如数据类型相似,这个时候我们就需要通过比较合理的数据结构来组织数据,达到一种高效的软件开发过程。
&&&&& &鸡啄米给大家讲讲数组。数组是一些相同类型的对象的集合,这些对象具有一定的顺序关系,在逻辑上是连续的,在内存中的存储上也是连续的。这些组成数组的对象叫做这个数组的元素。数组元素用数组名加带方括号的下标表示,比如,a[2]。数组元素具有相同的类型,可以是除void之外的任意一种类型。
&&&&&& 一.数组的声明
&&&&&& 数组跟结构体、类等一样也是自定义数据类型,所以使用以前也需要先进行声明。声明数组的时候要明确以下三点:1.确定数组名称;2.确定数组元素的类型;3.确定数组的维数及每维的大小。
&&&&&& 数组的声明形式为:数据类型 标识符[常量表达式1][常量表达式2]...;。
&&&&&& 数据类型规定了数据元素的类型,可以是整型、浮点型等基本数据类型,还可以是结构体、类等自定义数据类型。
&&&&& &标识符指定了数组的名称,记住,数组名是一个常量,代表着数组元素集合在内存存储的起始地址,不能进行自增自减运算。
&&&&& “常量表达式1”、“常量表达式2”、...叫做下标表达式,必须是正整数。这些下标确定了数组元素的个数及每个元素在数组中的位置。一个数组可能有多个下标,下标的个数就是数组的维数,有n个下标的数组叫做n维数组。而每个下标表达式表示该维的下标个数也就是该维的元素个数。数组元素的总个数是各个下标表达式的乘积。
&&&&&& 鸡啄米还要跟大家强调下标上界和下标下界的概念,数组每一维的下标的下界是0,上界是该下标所在维的元素个数减1。
&&&&&&&例如:int a[5];表示a是一个一维整型数组,有5个元素,下标下界是0,上界是5-1=4,所以这5个元素为a[0]...a[4],可以用来存放5个整数序列。
&&&&& &int b[2][3];表示b是一个二维整型数组,其中第一维有2个下标(0,1),第二维有3个下标(0,1,2)。数组元素的个数是6,可以用来存放2行3列的整数表格。对于数组b,第一个元素是b[0][0],最后一个元素是b[1][2],至于它们的存储顺序鸡啄米下一讲会讲到。
&&&&&& 二.数组的使用
&&&&&& 我们在使用数组时,只能分别访问数组的各个元素。访问哪个元素是由数组名和下标来决定的。
&&&&&& 数组元素的引用形式为:数组名[下标表达式1][下标表达式2]...;。
&&&&&& 这里下标表达式的个数要看数组的维数,n维数组就需要n个下标表达式。
&&&&&&&实际上,数组的每一个元素都能看成是一个同类型的变量来使用,对整型变量的操作同样也可以用于整型数组的每个元素,对类的对象的操作也同样可用于类类型的数组的每个元素。鸡啄米提醒大家,在使用数组时要注意:1.引用数组元素时的下标表达式可以是任意合法的算术表达式,但是结果必须是整型数据;2.引用数组元素时的下标表达式不能超过声明数组时规定的上下界,否则会出现数组越界的问题。
&&&&&&&鸡啄米给大家一个数组声明和使用的例子:
&&&&&&& #include <iostream>
&&&&&&& using namespace std;
&&&&&&& int main()
&&&&&&& {
&&&&&&&&&&&&&& int a[5];
&&&&&&&&&&&&&& int b[5];
&&&&&&&&&&&&&& int i;
&&&&&&&&&&&&&& for(i=0; i<5; i++)
&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&& a[i] = i*2;
&&&&&&&&&&&&&&&&&&&&&& b[5-i-1] = a[i];
&&&&&&&&&&&&&& }
&&&&&&&&&&&&&& for(i=0; i<5; i++)
&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&& cout << "a[" << i << "]=" << a[i];
&&&&&&&&&&&&&&&&&&&&&& cout << "& b[" << i << "]=" << b[i] << endl;
&&&&&&&&&&&&&& }
&&&&&&&&&&&&&& return 0;
&&&&&&& }
&&&&&&&上面的程序中声明了两个一维整型数组a和b,都有5个元素,用for循环对它们进行赋值,在引用b的元素时使用了算术表达式作为下标。for循环中把0,2,4,6,8分别赋值给a[0]...a[4],而b的各元素恰好是a中各元素的逆序排列,即8,6,4,2,0。在这个程序中如果我们用了表达式a[5]或b[5]或者下标更大,就会有数组越界的错误。这是编程入门时非常容易犯的错误,鸡啄米希望大家一定注意。
&&&&&& 如果没有数组,上面的a[5]和b[5]就需要一共定义10个变量,输出时也要写10条语句,如果有更复杂的运算那程序的复杂度可想而知,有了数组我们就可以用循环结构来简单的处理这类问题。
&&&&&& 关于数组的声明和使用鸡啄米就先讲到这里了。鸡啄米博客欢迎大家来讨论交流。谢谢大家。
&