指针的 const 限定

指向常量数据的非常量指针

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;//不允许
}

限定之后实参只能被查看而不能被修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值