一维数组的定义

  

当数组中每个元素只带有一个下标时,我们称这样的数组为一维数组。

数组的定义格式如下:

类型标识符  数组名[常量表达式]

说明:  

  • ①数组名的命名规则与变量名的命名规则一致。
  • ②常量表达式表示数组元素的个数。可以是常量和符号常量,但不能是变量。

例如:

int a[10];           //数组a定义是合法的
int b[n];            //数组b定义是非法的

其中,a是一维数组的数组名,该数组有10个元素

依次表示为:a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]。

需要注意的是:a[10]不属于该数组的空间范围。

当在说明部分定义了一个数组变量之后,C++编译程序为所定义的数组在内存空间开辟一串连续的存储单元,每个数组第一个元素的下标都是0,因此第一个元素为第0个数组元素。

a数组共有10个元素组成,在内存中10个数组元素共占10个连续的存储单元。a数组最小下标为0,最大下标9。按定义a数组所有元素都是整型变量。




一组数组的引用

通过给出的数组名称和这个元素在数组中的位置编号(即下标),程序可以引用这个数组中的任何一个元素。

一维数组元素的引用格式:数组名[下标]

例如:若i、j都是int型变量,则

 a[5]
 a[i+j]
 a[i++]

都是合法的元素。

说明

  • (1)下标可以是任意值为整型的表达式,该表达式里可以包含变量和函数调用。引用时,下标值应在数组定义的下标值范围内。
  • (2)数组的精妙在于下标可以是变量,通过对下标变量值的灵活控制,达到灵活处理数组元素的目的。
  • (3)C++语言只能逐个引用数组元素,而不能一次引用整个数组。
  • (4)数组元素可以像同类型的普通变量那样使用,对其进行赋值和运算的操作,和普通变量完全相同。

例如: c[10]=34;实现了给c[10]赋值为34。



一维数组的初始化

数组的初始化可以在定义时一并完成。

格式

类型标识符  数组名[常量表达式]={值1,值2,…}

例如

int a[5]={1,2,3,4,5}

说明
 

  • (1)在初值列表中可以写出全部数组元素的值,也可以写出部分。例如,以下方式可以对数组进行初始化:
    int x[10]={0,1,2,3,4};

该方法仅对数组的前5个元素依次进行初始化,其余值为0。
  

  • (2)对数组元素全部初始化为0,可以简写为:{}。

例如

  `int a[5]={};` 

将数组a的5个元素都初始化为0。



数组越界

C++语言规定,使用数组时,要注意:

  • (1)、数组元素的下标值为非负整数。
  • (2)、在定义元素个数的下标范围内使用。

然而,当在程序中把下标写成负数、大于数组元素的个数时,程序编译的时候是不会出错的。
例如:

int a[10];
a[-3]=5;   
a[20]=15;   
a[10]=20;  
int k=a[30]

这些语句的语法是正确的,能够通过程序的编译。然而,它们要访问的数组元素并不在数组的存储空间的,这种现象叫数组越界。

数组越界是实际编程中常见的错误,而且这类错误往往难以捕捉。因为越界语句本身并不一定导致程序立即出错,可能在遇到某些数据时才导致错误,有时由于越界,意外地改变了变量或指令,导致在调试器里调试的时候,程序不按照应当的次序运行的怪现象。