Const 使用方法总结
Const限定符的特点在于 强制最低访问权原则。用这个原则正确的设计软件可大大减少调试时间和不良副作用,并且能够使程序易于修改和调试。
最低访问权原则:为了完成知道的任务,总是授予一个函数访问其参数数据足够的权限,但是不给予更多的权限。
给函数传递的指针有如下四种情况:
指向非常量数据的非常量指针、指向非常量数据的常量指针、指向常量数据的非常量指针、指向常量数据的常量指针
1)如果传递给函数的值没有(或不应该)在函数体中被修改,应该用const声明该值以防止该值被意外的修改。
如打印一个一维数组,但并不希望在子程序中改变数组的长度值,故可用const修饰该值。
2)指向非常量数据的非常量指针具有最高访问权限。这种情况允许指针复用来修改数据,并能够通过修改指针使他能访问其他数据项。
3)可以修改指向常量数据的非常量指针使他指向具有合适类型的任何数据项,但是他所指向的数据不能被修改。
例如:‘
void printCharacters(const char * s)
{
for(; *s != '/0'; s++)
putchar(*s);
}
这种指针可用来接受一个数组参数,然后让函数在不修改数据的情况下处理数组的每一个单元。
用指向常量数据的指针传递诸如结构一样的大型对象可获得传引用调用的性能和传值调用的安全性。
如果内存是足够的,而执行效率是所要关心的问题,那么应该使用传值调用传递数据,从而强制实现最低访问权原则。要知道,某些系统并不很好的支持const,因此,传值调用时保护数据免遭修改最好的办法。
4)指向非常量数据的常量指针总是指向同一内存,其中的数据可以通过该指针修改。数组名就是这种情况
疑问:传值调用只能在调用函数中修改一个值。要在调用函数中修改多个值必须使用传引用调用???
摘自 C语言程序设计教程 c how to program