const
一、指针是const
含义:表示一旦得到了某个变量的地址,不能再指向其他变量
示例:
int *const q = &i;//q是const
*q = 26;//OK
q++;//ERROR
解释:q只能指向i,不能再指向其他,但是它指向的变量的值是可以改变的,也就是说,i和*p可以被赋予新的值
二、所指是const
含义:表示不能通过这个指针去修改那个所指的变量
示例:
const int *p = &i;(*p是const)
*p = 26;//ERROR!
i = 26;//OK
p = &j;//OK
解释:p,i不是const,i和p均可以改变,但是*p是const,也就是说不能通过p去修改i的值
如何区分:const是在“*”之前还是之后
在之前:所指是const
在之后:指针是const
例如:
int i;
const int *p1 = &i;
int const *p2 = &i;
int *const p3 = &i;
第一个和第二相同,均表示所指是const;第三个表示指针是const !
三、数组与const
示例:
const int a[ ] = {1,2,3,4,5};
数组变量已经是const的指针,这里的const表明数组的每个单元都是const int ,也就是说a[0],a[1],a[2],a[3],a[4]的值均不可改变,所以必须通过初始化赋值;
由于把数组传入函数时传递是地址,所以那个函数内部是可以修改数组的值,为了保证数组不被函数破坏,可以设置参数为const。比如: int sum(const int a[ ],int length)