- C#从入门到精通(第4版)
- 明日科技
- 1075字
- 2020-11-28 16:23:23
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键,即可将该座位号显示为“【已售】”。