指针常量和常量指针的区别//C++

const 修饰指针有三种情况

1.const 修饰指针 —— 常量指针

2.const 修饰常量 —— 指针常量

3.Const 即修饰指针又修饰常量

用代码举例子如下:

	int a = 10 ;
	int b = 20 ;

	//1.const 修饰指针   称为常量指针
	int const *p1 = &a ;//指针p1指向a,保存a的地址
	p1 = &b ;//正确	常量指针p1的指向可以更改	更改后指向了b
	*p1 = 80 ;//错误 常量指针p1的值不可以更改(这样写在VS2012直接报错)
	cout << "*p1 = "<<*p1<<endl;
	cout <<"P1储存的地址 = " <<p1 << endl;//输出p1指针储存的地址
	cout <<"a的地址 = "<< &a <<endl;//输出a的地址
	/*运行结果为
	*p1 = 20
	P1储存的地址 = 00FDFC5C
	a的地址 = 00FDFC68
	*/
	
	//2.const 修饰常量	称为指针常量
	int * const p2 = &a ; //指针p2指向a,保存a的地址
	p2 = &b ;//错误	指针常量p2的指向不可以被更改(这样写在VS2012中直接报错)
	*p2 = 100 ;//正确 指针常量p2指向的地址中所包含的值可以被更改
	cout << "*p2 = "<<*p2<<endl;
	cout <<"P2储存的地址 = " <<p2 << endl;//输出p2指针储存的地址
	cout <<"a的地址 = "<< &a <<endl;//输出b的地址
	cout <<"b的地址 = "<< &b <<endl;//输出b的地址
	/*
	*p2 = 100
	P2储存的地址 = 00A3FA28
	a的地址 = 00A3FA28
	b的地址 = 00A3FA1C
	*/

	//3.const 即修饰指针又修饰常量
	const int * const p = &a ;
	//指针指向a,并且指针的指向不可以更改,指向的地址所包含的值也不可以更改
	*p = 30 ;//错误 指针的指向不可以更改(这样写在VS2012中直接报错)
	p = &b ; //错误	指向的地址所包含的值不可以更改(这样写在VS2012中直接报错)
//语法报错,指向和值都不能修改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Free God

随缘

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值