常量指针 和 指针常量

C++primer 的定义

注意:C++primer的常量指针和网上的说法是不一样(相反)的,而书中没有 “指针常量”的说法,有的只是“指向常量的指针”。 因此,在面试的时候可以按照网络的说法来回答,而理解可以按书中的说法来理解。

在C++primer说到:“要辨别这些声明的含义最行之有效的方式是从右向左阅读”,例如

1. int* const p
2. const int* p

对于1来说,离变量p最近的是const,说明p是个常量,然后是 "*"号,说明p是一个指针,然后是“int”说明p指向了一个int类型。结合起来就是说,p是个指向int类型的 常量指针。

而对于2来说,离变量p最近的是“*”,说明p是一个指针,然后是int,说明p是一个指向整型的指针,最后是const,说明指向的那个整型是不可修改的常量。因此,2中是一个指向常量的指针

易错:

int a = 0;
int b = 0;

int *  const p = &a;
p = &b; //改变p指向的东西,错误
const int a = 0;
const int*p = &a;

int *q = &a;  //试图一个普通指针指向常量对象,因此是报错的。

网络的定义

//const* 是常量指针,*const 是指针常量
int const *a;    //a指针所指向的内存里的值不变,即(*a)不变
int *const a;    //a指针所指向的内存地址不变,即a不变
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值