保护数组中的数据

编写一个处理基本类型int 的函数值时,要选择是传递int类型的值还是要传递指向int的指针。同常都是直接传递数值,只是程序炫耀在函数中改变该数值是,才会传递指针。对于数组别无选择,必须传递指针,因为这样做效率比较高。如果一个函数按值传递数组,则必须分配足够的空间来储存原数组的副本,然后把原数组所有的数据拷贝值新的数组中。如果把和谐数组的地址传递给函数,让函数直接处理原数组则效率要高。传递时会出现一些问题,C通常都按值传递数组,因为这样可以保证数据的完整性。如果函数使用的是原始数据的副本没就不会以外修改冤死数据,但是处理数组的函数通常都需要使用原始数据,因此,这样的函数可以修改原数组,

例如下面的函数给每个数组的每个元素都加上一个相同的值:

void add_to (ouble ar[],int n,double val)

{

int i;

for(i=0;i<n;i++)

ar[i]+=val;

}

因此调用该函数后,prince数组中每个元素的值都增加了2.5;

add_to(prince,100,2.5);

该函数改了数组中的数据,之所以可以这样做,是因为韩阿叔通过指针直接使用了原始数据

对形式参数的使用const

如果函数的意图不是修改数组中的数据内容,那么函数原型和函数定义中声明形式参数时应使用关键字const例如sum函数的原型和定义如下

int sum(const int ar[],int n);         //函数原型

{

int i;

int total=0;

for(i=0;i<n;i++)

total+=ar[i];

return total;

}

这里使用const并不是要求原数组是常量,而是该函数在处理数组是将其视为常量,不可更改。这样使用可以保护数组不被修改,就像按值传递可以保护基本数据类型的原始值不被改变一样,一般而言,如果编译器编写的函数需要修改数组,在生命数组形参是则不适应const,如果编写的函数不需要修改数组,那么在声明数组形参时最好使用const.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值