总说const:
c语言当中,关键字const是用来定义变量,加了const修饰的变量,它的值只能读,不能写。也就是说const修饰的变量是一个只读变量。在使用const 修饰变量时,它有以下的特点:
(1)数据类型对于const而言是透明的;
(2)const用于封锁直接修饰的内容,将该内容变为只读;
(3)权限只能同等传递或者缩小传递。
那么,这些特点的具体表现是什么呢?
第一:透明性
例如:
int const ac = 100;
const int bc = 100;
当const修饰指针变量时,例如:
int const *p1 = ∾
const int *p2 =&bc;
在这里,const放在数据类型符的前或者后它的意义都是一样的
第二:只读性
此外在const修饰指针变量除了上面讲的透明性中的两种还有一种是:
int a = 10;
int *const p ;
此时的p是一个指向int型的指针,被const修饰,声明时必须同时初始化,之后不能修改p的值。也就是说,const此时直接修饰的是p,p只能做为右值,不能作为左值进行操作。
第三:同等传限或缩小传限,不能放大传递
总结:const用来修饰指针时,当const放在数据类型的前后时,此时的指针变量不能解引用去改变有const修饰的普通变量。
int const ca = 20;
int const *cp = &ca;//正确
*cp = 10;//错误。
当const放在*后边时,此时的指针变量所指向的地址不能被修改。
int *const cp4 = &ca;//error
//该句const直接修饰cp4,cp4不能做左值,但可以对cp4解引用,可能修改ca的值,可ca不能写入,所以错误