常量指针和指针常量的区别

 今天写程序的时候出现了报错:error C2440: 'initializing' : cannot convert from 'const int *' to 'int *const '

这句话的意思是:两个变量的类型不同,不能进行初始化赋值
C语言中常见的两个const修饰指针变量的定义方式,经常让人傻傻分不清楚:
const int p;
int * const p;
首先说明,这两个定义,定义出的p都是指针!
但这两个指针变量定义,又都是定义一个常量,常量是指的哪个?
Bjarne在他的The C++ Programming Language 里面给出过一个助记的方法:
把一个声明从右向左读,
读成 pointer to:
const char * p; p is a pointer to char const ; //直译:p是指针,指向字符类型常量char * const p; p is a const pointer to char //直译:p是常量(指针) ,指向字符类型
可结合以下代码,进行上述的理解与练习:
还有一种定义方式,表示两者都不可改变:
形式:const int * const pTmp ; 含义:pTmp不可修改,pTmp所指对象也不能修改。

还有一种定义方式,表示两者都不可改变:
 形式:const int * const pTmp ; 含义:pTmp不可修改,pTmp所指对象也不能修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值