当const遇上了指针

const和指针

指针指向一个常量对象

将指针指向常量对象,这样可以防止使用指针来修改所指向的值

int num = 6;
const int *p = #
//*p = 8 非法,不能改变指向常量对象的值 

但是,对象num本身不是常量可以被修改

num = 8 //合法的

也就是说,它指向的那个值并不是常量,因此我们不能通过p来修改它指向的值但是可以修改num的值从而修改p指向的值

将指针本身申明为常量

int t1 =1;
int t2 =2;
const int  *p1 = &t1;
int *const p2 = &t2;
//p2 = &t1 非法,p2是常量指针,无法改变其指向的地址,只能指向t1

第一个申明就是前面所说的不能修改p1来改变p1所指向地址里的值,但可以修改原来变量的值从而达到修改p1所指向地址里的值;第二个申明p2本身被申明为一个常量,也就是它指向的地址不能被改变,但是可以修改它所指向地址里值

	int t1 = 1;
	int t2 = 2;
	const int *p1 = &t1;
	//*p1+=1; 非法
	cout << *p1 << endl;
	t1++;
	cout << *p1 << endl;
	int *const p2 = &t2;
	cout << *p2 << endl;
	*p2 += 1;
	//p2 = &t1; 非法
	cout << *p2 << endl;

在这里插入图片描述
一开始p1指向t1,p2指向t2,p1输出t1的值1,改变t1的值为2,再次输出p1,仍然输出t1的值2 ,也就是说p1地址存放的值被t1更改了;p2一开始输出t2的值2,p2修改其地址存放的值为3,再次输出p2得到修改后的值为3,也就是说,p2不能改变其指向但是他指向的值是可以通过自身修改的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值