C#从入门到精通(第4版)
上QQ阅读APP看书,第一时间看更新

7.2 一维数组的创建和使用

视频讲解:光盘\TM\lx\7\02一维数组的使用.mp4

一维数组实质上是一组相同类型数据的线性集合,当在程序中需要处理一组数据时,或者传递一组数据时,可以应用这种类型的数组。一维数组就好比一个大型的零件生产公司,而公司中的各个车间(如车间1、车间2、车间3等,这些名称相当于数组中的索引号)就相当于一维数组中的各元素,这些车间既可以单独使用,也可以一起使用。本节将介绍一维数组的创建及使用。

7.2.1 一维数组的创建

数组作为对象允许使用new关键字进行内存分配。在使用数组之前,必须首先定义数组变量所属的类型。一维数组的创建有两种形式。

1.先声明,再用new运算符进行内存分配

声明一维数组使用以下形式:

数组元素类型[ ] 数组名字;

数组元素类型决定了数组的数据类型。它可以是C#中任意的数据类型,包括简单类型和组合类型。数组名字为一个合法的标识符,符号“[ ]”指明该变量是一个数组类型变量。单个“[ ]”表示要创建的数组是一个一维数组。

【例7.1】声明一维数组,实例代码如下。

        int[] arr;          //声明int型数组,数组中的每个元素都是int型数值
        string[] str;        //声明string数组,数组中的每个元素都是string型数值

声明数组后,还不能访问它的任何元素,因为声明数组只是给出了数组名字和元素的数据类型,要想真正使用数组,还要为它分配内存空间。在为数组分配内存空间时必须指明数组的长度。为数组分配内存空间的语法格式如下:

数组名字 = new数组元素类型[数组元素的个数];

数组名字:被连接到数组变量的名称。

数组元素个数:指定数组中变量的个数,即数组的长度。

通过上面的语法可知,使用new关键字分配数组时,必须指定数组元素的类型和数组元素的个数,即数组的长度。

【例7.2】为数组分配内存,实例代码如下。

arr = new int[5];

以上代码表示要创建一个有5个元素的整型数组,并且将创建的数组对象赋给引用变量arr,即引用变量arr引用这个数组,如图7.1所示。

图7.1 一维数组的内存模式

在图7.1中arr为数组名称,方括号“[ ]”中的值为数组的下标。数组通过下标来区分数组中不同的元素。数组的下标是从0开始的。由于创建的数组arr中有5个元素,因此数组中元素的下标为0~4。

说明 使用new关键字为数组分配内存时,整型数组中各个元素的初始值都为0。

2.声明的同时为数组分配内存

这种创建数组的方法是将数组的声明和内存的分配合在一起执行。

语法如下:

数组元素类型[] 数组名 = new数组元素类型[数组元素的个数];

【例7.3】声明并为数组分配内存,实例代码如下。

        int[ ] month = new int[12]

上面的代码创建数组month,并指定了数组长度为12。这种创建数组的方法也是C#程序编写过程中普遍的做法。

7.2.2 一维数组的初始化

数组可以与基本数据类型一样进行初始化操作。数组的初始化可分别初始化数组中的每个元素。数组的初始化有以下两种形式:

        int[] arr=new int[]{1,2,3,5,25};         //第一种初始化方式
        int []arr2={34,23,12,6};                 //第二种初始化方式

从中可以看出,数组的初始化就是包括在大括号之内用逗号分开的表达式列表。用逗号(,)分割数组中的各个元素,系统自动为数组分配一定的空间。用第一种初始化方式,将创建5个元素的数组,依次为1、2、3、5、25。第二种初始化方式,会创建4个元素的数组,依次为34、23、12、6。

7.2.3 一维数组的使用

一维数组是常见的一种数据结构,下面的实例是使用一维数组将1~12月份各月的天数输出。

【例7.4】创建一个控制台应用程序,其中定义了一个int类型的一维数组,实现将各月的天数输出,程序代码如下。(实例位置:光盘\TM\sl\7\1)

        static void Main(string[] args)
        {
            //创建并初始化一维数组
            int[] day = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
            for (int i=0; i<12; i++)                               //利用循环将信息输出
            {
              Console.WriteLine((i+1)+"月有"+day[i]+"天");           //输出的信息
            }
            Console.ReadLine();
        }

按Ctrl+F5键查看运行结果,如图7.2所示。

图7.2 输出1~12月份各月的天数