C++中使用函数显示数组及用const保护数组
创建显示数组内容的函数很简单。只需将数组名和填充的元素数目传递给函数,然后该函数使用循环来显示每个元素。然而,还有另一个问题–确保显示函数不修改原始数组。除非函数的目的就是修改传递给它的数据,否则应避免发生这种情况。使用普通参数时,这种保护将自动实现,这是由于C++按值传递数据,而且函数使用数据的副本。然而,接受数组名的函数将使用原始数据,这正是fil_array()函数能够完成其工作的原因。为防止函数无意中修改数组的内容,可在声明形参时使用关键字const(参见第3章):
void show_array(const double arl],int n);
该声明表明,指针ar指向的是常量数据。这意味着不能使用ar修改该数据,也就是说,可以使用像ar[0]这样的值,但不能修改。注意,这并不是意味着原始数组必须是常量,而只是意味着不能在 show_amay()函数中使用 ar 来修改这些数据。因此,show_array()将数组视为只读数据。假设无意间在 show_array()函数中执行了下面的操作,从而违反了这种限制:
ar[0] += 10;
编译器将禁止这样做。例如,BorlandC++将给出一条错误消息,如下所示(稍作了编辑):
Cannot modify a const object in function
show array(const double *int)
其他编译器可能用其他措词表示其不满。
这条消息提醒用户,C++将声明const double ar[]解释为const double * ar。因此,该声明实际上是说ar指向的是一个常量值。结束这个例子后,我们将详细讨论这个问题。下面是show_array()函数的代码:
void show array(const double arl],int n)
{
using namespace std;
for(int i=0;isn; i++)
{
cout << "Property #" <<(i + 1)<< ":$";
cout << ari]<< endl;
}
}
对C++感兴趣的朋友点这里:C/C++课程