总说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规则详解

此外在const修饰指针变量除了上面讲的透明性中的两种还有一种是:

int  a = 10;

int  *const p ;

此时的p是一个指向int型的指针,被const修饰,声明时必须同时初始化,之后不能修改p的值。也就是说,const此时直接修饰的是p,p只能做为右值,不能作为左值进行操作。

第三:同等传限或缩小传限,不能放大传递

const规则详解

总结: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不能写入,所以错误

相关文章: