博客园  :: 首页  :: 新随笔  :: 订阅 订阅  :: 管理

简单数组

即是一组相同类型数据(前两节课讲到的那些数据类型)组合在一起,使用一个通用的名称,通过分配的下标访问的数据集合中的元素

下图显示系统内存中的数组结构,可以看到数组的下标是从0开始的。如图5-1

 

                            图5-1

       也就是说,无论数组中的每一个项的值是多少,但是访问它的时候都是根据其所在的下标。而所谓的下标则是指在数组中的位置。这个下标是从0开始依次往后数的。

数组的申明

在声明数组时,应先定义数组中元素的类型,其后是一个空方括号和一个变量名。例如,下面声明了一个包含整型元素的数组:

            string[] Mystr;     //申明一个string类型的数组

            int[] Myint;        //申明一个int类型数组

      

 数组的初始化

       小天:这么简单就把一个装数据的容器就建立了?那接下来是否就需要初始化,也就是将数据放进去。

       老田:是的。不过声明了数组后,就必须先为数组分配内存,以保存数组的所有元素。数组是引用类型,所以必须给它分配堆上的内存。为此,应使用new运算符,指定数组中元素的类型和数量来初始化数组的变量。下面指定了数组的大小。

            int[] myInt;            //申明数组变量

            myInt = new int[7];     //初始化数组

 

在声明和初始化后,变量myArray就有了指向6个整型值的引用,它们位于托管堆上。但是这个时候,已分配的内存空间中还是空的,如果是int这样的则会用0填充,如图5-1所示。

除了在两个语句中声明和初始化数组之外,还可以在一个语句中声明和初始化数组:

            int[] myInt1 = new int[7];

还可以使用数组初始化器为数组的每个元素赋值。数组初始化器只能在声明数组变量时使用,不能在声明数组之后使用,例如:

            int[] myInt1 = new int[7] { 11, 12, 30, 53, 21, 38, 27 };

       申明后的效果如图5-2,每个内存空间中放一个整数,而它们的下标从0开始,依次递增。

 

             图5-2

如果用花括号初始化数组,还可以不指定数组的大小,因为编译器会计算出元素的个数,例如下面的写法,和上例效果一样:

            int[] myInt2 = new int[] { 11, 12, 30, 53, 21, 38, 27 };

使用C#编译器还有一种更简化的形式。使用花括号可以同时声明和初始化数组,编译器生成的代码与前面的例子相同:

            int[] myInt3 = { 11, 12, 30, 53, 21, 38, 27 };

 本文章为天轰穿原创作品,转载请注明出处及作者。