编程词典
明日图书
明日软件
用户注册
用户登录
站内
  当前位置:编程词典服务网 >> 编程词典社区论坛 >> 数组类型
  · 数组类型

用户:  大麦
发帖:  430 篇
作品:  0 个
回复:  110 篇
技术分:  1160 分
等级:  
注册:  2010-05-11 09:09:40



发表于:2010-07-10 15:20:28
          楼主
数组类型
数组是一种简单的数据结构,它描述的是一组相同数据类型元素的集合。在内存中,数组是连续存储的。数组按维数划分,可以分为一维数组、二维数组和多维数组。其中,一维数组的定义格式为:
数组类型  数组名称[数组长度];
下面的语句定义了一个包含5个元素的一维整型数组。
int nArray[5];
为了使用数组,需要访问数组中的元素。程序中可以通过元素在数组中的位置来访问,这被称之为索引访问或下标访问。下面的语句用于访问数组中的第2个元素。
nArray[1] = 10;
数组的访问是通过数组名和下标来实现的。在C++中数组的下标是从0开始的,以数组nArray为例,其下标范围为0…4,其中下标0表示第一个数组元素,下标1表示第2个数组元素…。如果使用下标5来访问数组,将会出现数组访问越界,因为下标5表示访问数组中的第6个元素,而nArray只包含5个元素。数组访问越界是一件非常危险的事情,在开发程序时应避免出现数组访问越界的情况,C++编译器不能够发现数组访问越界的错误。
在定义数组时,数组维数指定了数组中包含的元素数量,也就是所说的数组长度。数组维数必须大于等于1,并且必须是一个常量表达式,即在编译时就能够计算出它的值。下面的数组定义是合法的。
const int nSize = 5;    //定义一个整型常量
int nArray[nSize];    //合法的数组定义
而下面的数组定义是非法的。
int nSize = 5;     //定义整型变量
int nArray[nSize];    //非法的数组定义
因为数组维数必须是常量表达式,而变量nSize只能在程序执行到其定义时才能确定大小。
与定义变量类似,定义数组时也可以直接进行初始化。例如,下面的语句在定义数组nArray时为其进行了初始化。
int nArray[5] = {4, 5, 8, 6, 9};  //定义数组并进行初始化
在为数组进行初始化时也可以只对数组的部分元素进行初始化。例如数组nArray包含5个元素,只对前4个元素进行初始化。
int nArray[5] = {4, 5, 8, 6};   //对数组部分元素进行初始化
如果数组中包含5个元素,而我们在初始化时提供了6个元素,这将导致编译错误,提示太多的初始化。例如:
int nArray[5] = {4, 5, 8, 6, 9, 10}; //错误的定义
在定义数组时如果显示地提供初始值,则可以不指定数组的长度。例如:
int nArray[] = {4, 5, 8, 6, 9};  //不指定数组长度
此时,数组nArray的长度为5。
在定义数组时如果需要将数组中的所有元素初始化为0,可以简写为如下的形式。
int nArray[5]= {0};
在对数组进行初始化时,如果只对部分元素进行了初始化,则不初始化的元素默认为0。因此下面的语句将数组nArray中的第一元素初始化为1,其他元素为0,而不是将所有的元素初始化为1。
int nArray[5]= {1};
在介绍完一维数组,接下来介绍二维数组。在C++中二维数组的定义格式为:
数组类型 数组名[常量表达式][常量表达式];
下面的语句定义了一个二维整型数组。
int nArray[3][4];     //定义一个二维数组
与一维数组相同,二维数组也是通过数组名和下标来访问的,只是数组的下标有两个。例如,下面的语句访问了二维数组中的元素。
nArray[1][2] = 100;    //访问二维数组元素
在二维数组中,第一维称为行维,第2维称为列维,这样二维数组nArray有3行,每行有4个元素,共计有12个元素。对于二维数组来说,可以将第一维nArray[3]中的每一个元素认为是一个数组,包含4个元素,如图1所示。
 
图1  二维数组示意图
在定义二维数组时也可以为数组元素进行初始化。例如,下面的语句用于为二维数组nArray进行初始化。
int nArray[3][4] = {
 {1, 2, 3, 4},
 {5, 6, 7, 8},
 {9, 10, 11, 12}
};
也可以使用一个大括号初始化二维数组的所有元素。例如:
int nArray[3][4] = {
 1, 2, 3, 4,
 5, 6, 7, 8,
 9,10, 11, 12
};
但是,该方法并不提倡。如果数组元素过多的话,很难界定每一个元素。与一维数组类似,二维数组也可以只对部分元素进行初始化。例如:
int nArray[3][4]; = { {1},{2},{3} };
结果是对每一行第一个元素赋值,其他元素为0。
在定义二维数组时,如果需要提供全部元素的初始值,可以省略第一维的长度,但是不能省略第二维的长度。例如:
int nArray[][4] = {1,2,3,4,5,6,7,8,9,10,11, 12};
int nArray[][4] = {1,2,3,4,5,6,7,8,9,10,11};
 注意:最后一行代码,只提供了11个元素的初始值,但是数组nArray却包含12个元素,最后一个元素被初始化为0。
本帖赏分:0 分   回复数:0 篇     
修改   删除   引用   回复
该帖暂无回复!
吉林省明日科技有限公司提供技术支持. 
Copyright © 1999-2008 吉林省明日科技有限公司. 吉ICP备10002740
当前时区 GMT+8, 今天是 
刷新页面 - 关于我们 - 设为首页