指向常量数据的非常量指针
int i,j,*q;
const int *p;//指向常量整型的非常量整型指针
p=&j;//允许,指针 p 可以变化
*p=5;//不允许,因为指向的数据不可变
q=p;//不允许,j 的位置不可以赋给别的指针!
指向非常量数据的常量指针
int var1,var2;
int * const p=&var1;//一旦初始化赋值便不可被修改
*p=5;//允许
p=&var2;//不允许
补充:下面的操作不允许:
const int var=10;
int * const p1=&var;
因为 var 是常量还是非常量出现了矛盾
指向常量数据的常量指针
const int val=10;
const int *const p=&val;
*p=5;//不允许
或者:
int var=10;
const int * const p=&var;
*p=5;//不允许
var=5;//允许!!!
//虽然 var==*p (不能说是严格意义上的等于)
用于限定函数的形式参数,以保护实参
void output(const double *pd){
cout<<*pd;//允许!
*pd=5;//不允许!!!
}
或者:
void output(const double &d){//传引用
cout<<d;//允许
d=15;//不允许
}
限定之后实参只能被查看而不能被修改
1094

被折叠的 条评论
为什么被折叠?



