3.4.5 数组边界

2013-10-07 14:43:59 · 作者: · 浏览: 65

3.4.5  数组边界

之前已经介绍过,索引数组时要小心。因为数组的大小是固定的,所以可以创建一个整型常量存储数组的大小。程序的开头部分就采取了这种做法:

  1. const int MAX_ITEMS = 10

下面代码在给主人公添加物品之前使用MAX_ITEMS进行数组保护:
  1. if (numItems < MAX_ITEMS)  
  2. {  
  3. inventory[numItems++] = "healing potion";  
  4. }  
  5. else  
  6. {  
  7. cout << "You have too many items and can’t carry another.";  
  8. }  

这段代码首先检测numItems是否小于MAX_ITEMS。如果小于,则可以安全地把numItems当作索引号使用,并赋给数组一个新的string对象。在本例中,numItems为3,所以字符串"healing potion"赋给了数组的位置3。如果不满足小于条件,则显示消息"You have too many items and can't carry another."。

那么,如果使用数组边界以外的元素会怎样?这要视情况而定,因为这是在使用计算机内存中未知的部分。最坏的情况是,如果试图给数组边界外的元素赋值,将导致程序行为不可预测,甚至程序崩溃。

可以在使用索引号之前对其进行测试,以确保它是合法的数组位置。这种做法叫做边界检查。如果要使用的索引可能不合法,那么边界检查是必不可少的。