常量指针与指针常量

  • 常量指针//指向const对象的指针
const int * ptr;//指向一个int类型常量的指针,const限制其指向对象的类型,并非 ptr本身

ptr 本身不是一个常量,不需要对其初始化。同时,也允许对其进行二次复制,使其指向另一个const对象。
唯一不行的就是,不能通过该指针修改其指向的const 对象

const int a = 1;
const int b = 2;
int c = 3;
ptr = &a;
prt = &b;// ok
ptr = &c;// ok
*ptr = 2;// error. can not change the b through ptr
int *d = NULL;
d = &a// error. invalid conversion from 'const int*' to 'int'

允许将一个非const对象的地址赋给指向const对象的指针,但不允许将const对象的地址赋值给一个普通的、非const对象的指针,这样会导致编译错误。

  • 指针常量//const 指针
int const* ptr1;//指向int类型类型的常量指针,必须初始化

顾名思义,该指针值可以不可以修改,但可以修改该指针指向的对象的值。

int a  = 1int *const prt1 = &a;
* ptr1 = 2;
  • 指向const对象的const 指针
    综合上面两点,可以理解这个东西
  • 指针和typedef
typedef string *pstring;// pstring是一个 指向string类型的指针
const pstring cstr;// 真正代表的是 string *const cstr, 因为 const修饰的是pstring类型,这是一个指针,因此该句声明是把cstr定义为指向string类型的const指针。
pstring const cstr;// 与 上面一句声明一样,比较难理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值