保护数组中的数据

  当编写一个处理基本数据类型的函数时,要选择是传递相应类型的值还是对应指针。通常都是值传递,只有程序需要在函数中改变数值是,才会传递指针。但对数组来说别无选择,必须使用指针!因为这样效率最高。如果按值传递来传递指针,则必须分配足够的空间来存储原始数组的副本,然后把原始数组的所有数据拷贝到副本中;如果把数组的地址传递给函数,能直接处理原始数组必然效率更高一点,又称引用传递。

  注意引用传递会导致一些问题:C通常是值传递,因为这样可以保证数据的完整性(在java就抛弃了引用传递,只使用值传递)。如果函数使用 的是原始数组的副本,就不会意外改变原始数据。但是处理数组的函数都需要使用原始数据,在此基础上举一个例子

  

 

不过有时候,其他函数并不需要修改数据,编程错误可能会破坏原数数据,可以在函数原型和函数定义中声明形参时使用const关键字来预):

 

const的其他内容

 已知const可以创建变量,虽然使用#define指令也可以实现类似功能,但是const的用法更显灵活,可以创建const数组、const指针和指向const的指针:

  上个例子演示了const如何保护数组,程序试图修改数据的时候便会报错;

   指向const的指针不能用于改变值

   

   指向const的指针通常用于函数形参中,表明该函数不会使用指针改变数据

   关于指针赋值和const需要注意一些规则,首先,把const数据或非const数据的地址初始化为指向const的指针或为其赋值是允许的

   

 

   但是你,只能把非const数据的地址赋值给普通指针

   

 

   这个规则非常合理。否则通过指针就能改变const数组中的数据了。

   还有两种有趣的使用方法:

   

   

 

 

   

posted @ 2022-04-29 13:47  星雨boy  阅读(47)  评论(0)    收藏  举报