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

一、概述

在 C/C++ 中有两个概念,指针常量 int * const p常量指针 const int *p (int const *p) ,下面分享一下如何区分指针常量和常量指针。


二、区别

2.1 指针常量 (限制的是指针,即指针不可指向其它地址)

指针常量的定义: int * const p;

说明: 指针常量的 * 号在左,const在右,从左往右读作“指针常量”。指针常量中 const 的作用是限制指针不可变,也就是说指针一旦初始化不可再更改,但是其指向对象的值是可变的。

示例如下:

int x=10;
int y=20;
int * const p = &x;  // 此处的 p 是指针常量,因此指针指向的地址不可变。
*p = 30;  // 可以修改修改值

p = &y;  // 报错,read-only variable 'p'

2.2 常量指针 (限制的是指针指向的值,即指针指向的值不可变)

常量指针的定义: const int * p;int const * p; (两种写法等价)

说明: 常量指针中const 总是位于 * 号左侧,即从左往右读作“常量指针”。 常量指针中 const 的作用是限制常量不可变,即指针初始化后可以修改其指向,但是无法修改对象的值。

示例如下:

int x=10;
int y=20;
const int *p = &x;
p = &y; //允许修改指向

*p = 30; //报错,不允许修改值

小结: 当判断限制域时,const 总是修饰其左侧标识符,如果 const 位于最左侧则修饰其右侧标识符。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值