const修饰,常量指针,指针常量,常指针常量(初级版)

1.const修饰在数据类型前

即 const typename,代码示例如下:

const int a = 10; 
a = 20;  //Error!无法修改,会报错

此时使用a=20无法再修改a的值,但这只是在语法层面上,禁止了通过赋值运算符的方式修改一个变量的数值,但我们仍然可以通过指针的方式进行修改

const int a = 10; 
a = 20;  //Error!无法修改,会报错
int* b = &a;
*b=20;  //is ok!

通过指针我们成功的将*b指向的内存空间的数值修改了,此时通过cout输出a的值,可以发现a为20

二. const在 * 运算符左右两侧的差异

1.const在*的左侧,即常量指针

int b = 10;
const int* a = &b;   //常量指针,int const *a =&b 与它效果相同
*a = 100;    // Error!  

补充:int const *a =&b 与const int* a = &b等效。

此时*a所指向内存空间的值不能改变,但a指向的对象可以改变 。

但b目前没有被const修饰,我们仍然可以通过b去修改,代码如下:

int b = 10;
const int* a = &b; 
*a = 100;    // Error! 
b = 10000;
std::cout << *a << "   " << b << std::endl;

此时用cout输出可以得到10000    10000.

2.const在*的右侧,即指针常量

int* const a = &b;  //a = &c;/Error!
*a = 100;  //is ok!

此时*a所指向的内存空间的值可以改变,但a指向的对象不能改变。

3.const在*的左右两侧都有,即常指针常量

以下两种语法等效:

const int * const a = &b;
int const *const a = &b;

*a指向的内存空间的值不能改变,指向的对象也不能改变。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Ryan.Alaskan Malamute

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值