7.3 二维数组的创建和使用

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

二维数组常用于表示表,表中的信息以行和列的形式组织,第一个下标代表元素所在的行,第二个下标代表元素所在的列。

7.3.1 二维数组的创建

二维数组可以看作是特殊的一维数组,声明二维数组的语法如下。

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

【例7.5】声明二维数组,实例代码如下。

        int[, ] myarr;

同一维数组一样,二维数组在声明时也没有分配内存空间,同样要使用关键字new来分配内存,然后才可以访问每个元素。

对于高维数组,有两种为数组分配内存的方式:

(1)直接为每一维分配内存空间

【例7.6】为每一维数组分配内存,实例代码如下。

        int[, ] a=new int[2,4];

上述代码创建了二维数组a,二维数组a中包括两个长度为4的一维数组,内存分配如图7.3所示。

图7.3 二维数组内存分配(第一种方式)

(2)分别为每一维分配内存空间

【例7.7】分别为每一维分配内存,实例代码如下。

        int[][] a = new int[2][];
        a[0] = new int[2];
        a[1] = new int[3];

通过第二种方式为二维数组分配内存,如图7.4所示。

图7.4 二维数组内存分配(第二种方式)

7.3.2 二维数组初始化

二维数组的初始化同一维数组初始化类似,同样可以使用大括号完成。

语法如下:

        type[, ] arrayname = {value1, value2…valuen};

type:数组数据类型。

arrayname:数组名称,一个合法的标识符。

value:数组中各元素的值。

【例7.8】初始化二维数组,实例代码如下。

        int[, ] myarr1 = new int[, ]{ { 12, 0 }, { 45, 10 } };
        int[, ] myarr2 = {{12,0}, {45,10}};

初始化二维数组后,要明确数组的下标都是从0开始。例如,上面的代码中myarr[1,1]的值为10。

int型二维数组是以int[, ] myarr1来定义的,所以可以直接给myarr1[x, y]赋值。例如,给myarr1[1]的第2个元素赋值的语句如下:

        myarr1[1,1] = 20;

闯关训练:使用C#实现将二维数组中的行列互调显示出来。如:

7.3.3 二维数组的使用

需要存储表格的数据时,可以使用二维数组。如图7.5所示举例说明了4行3列的二维数组的存储结构。

【例7.9】创建一个控制台应用程序,其中定义了一个静态的二维数组,并使用数组的GetLength方法获取数组的行数和列数,然后通过遍历数组输出其元素值。程序代码如下。(实例位置:光盘\TM\sl\7\2)

        static void Main(string[] args)
        {
            int[, ] arr=newint[2,2]{{1, 2},{3, 4}};                 //自定义一个二维数组
            Console.Write("数组的行数为:");
            Console.Write(arr.GetLength(0));                        //获得二维数组的行数
            Console.Write("\n");
            Console.Write("数组的列数为:");
            Console.Write(arr.GetLength(1));                        //获得二维数组的列数
            Console.Write("\n");
            for (int i = 0; i < arr.GetLength(0); i++)
            {
              string str = "";
              for (int j = 0; j < arr.GetLength(1); j++)
              {
                  str=str+Convert.ToString(arr[i, j])+" ";           //循环输出二维数组中的每个元素
              }
              Console.Write(str);
              Console.Write("\n");
            }
        }

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

图7.5 二维数组的存储结构

图7.6 二维数组实例运行结果

互动练习:假设客车的座位数是9行4列,使用二维数组在控制台应用程序中实现简单客车售票系统。具体要求为:使用一个二维数组记录客车售票系统中的所有座位号,并在每个座位号上都显示“【有票】”,然后用户输入一个坐标位置,按Enter键,即可将该座位号显示为“【已售】”。