下面说说const这个关键字,在C语言中很容易混淆:
关键字const并不能把变量变成常量,在一个符号前加上const限定符只是表示这个符号不能被赋值。也就是它的值对于这个符号来说是只读的,但它并不能防止通过程序的内部(甚至是外部)的方法来修改这个值。const最有用之处就是用它来限定函数的形参,这样该函数将不会修改实参指针所指的数据,但其它的函数可能会修改它。这也许是C和C++中const最一般的用法。
(1)const用在数据上
const int a = 10;
(2)const用在指针上
const int * a = &b;
int i = 27;
a = &i;
这段代码表示a是一个指向常量整型的指针。这个指针不能用于修改这个整型数,但是在任何时候,这个指针本身的值是可以改变的。这样,它就指向的不同的地址,对它进行解除引用操作时会得到一个不同的值。
const和*的组合通常只用于在数组形式的参数中模拟值传递调用。它声称“我给你一个指向他的指针,但你不能修改它”,这个约定类似于极为常见的void *的用法。