鸡啄米已经给大家讲了几种基本的控制结构函数以及类与对象的知识,对于一般问题这些都可以解决了,但是我们在软件开发中难免要用到大型点的数据,相互之间有一定联系的数据,比如数据类型相似,这个时候我们就需要通过比较合理的数据结构来组织数据,达到一种高效的软件开发过程。

       鸡啄米给大家讲讲数组。数组是一些相同类型的对象的集合,这些对象具有一定的顺序关系,在逻辑上是连续的,在内存中的存储上也是连续的。这些组成数组的对象叫做这个数组的元素。数组元素用数组名加带方括号的下标表示,比如,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],至于它们的存储顺序鸡啄米下一讲会讲到。

鸡啄米:C++编程入门系列之二十五(数组、指针和字符串:数组的声明和使用)

       二.数组的使用

       我们在使用数组时,只能分别访问数组的各个元素。访问哪个元素是由数组名和下标来决定的。

       数组元素的引用形式为:数组名[下标表达式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条语句,如果有更复杂的运算那程序的复杂度可想而知,有了数组我们就可以用循环结构来简单的处理这类问题。

       关于数组的声明和使用鸡啄米就先讲到这里了。鸡啄米博客欢迎大家来讨论交流。谢谢大家。