1、指针是const数组
含义:表示一旦获得了某个变量的地址,不能再指向其余变量函数
示例:指针
int *const q = &i;//q是const变量
*q = 26;//OKco
q++;//ERROR参数
解释:q只能指向i,不能再指向其余,可是它指向的变量的值是能够改变的,也就是说,i和*p能够被赋予新的值const
2、所指是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 !
3、数组与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)