C++学习笔记:关于指针常量与常量指针的理解

首先,指针常量与常量指针中存放的都是地址,明白这一点后更便于理解。

1、常量指针(const修饰指向的值)

常量指针指向常量,不可修改,但指针本身指向何处可以修改。

    int a = 10;
    int b = 20;
	const int* p = &a;//常量指针,指向常量a
	cout << p << endl;//输出结果为a的地址
    cout << *p << endl;//输出结果为a的值
    *p = 20;//错误,指向的值不可修改
    p = &b;//正确,指向何处可以修改

 int 表明了指针指向地址中存放的变量类型,const放在int前表明存放值为常量。

 2、指针常量(const修饰指针本身)

指针存放地址为常量,指向何处不可修改,地址中存放的值可以修改。

int *const p2 = &a;//指针常量
*p2 = 20;//正确,指向的值可以修改
p2 = &b;//错误,指针的指向作为常量不可修改

 p2存放地址,const位于p2前,修饰指针p2本身,表明存放的地址不可修改。

3、const既修饰指针又修饰指向的值

指向的值与指向何处均不可修改。

const int * const p3 = &a;
p3 = &b;//错误
*p3 = 20;//错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值