const 修饰指针的三种情况

本文详细介绍了C++中const修饰指针的三种情况:指针指向的内容不可修改、指针本身不可修改以及两者都不可修改。通过实例代码展示了这三种情况的区别,并强调了const在不同位置的含义,以及对于指针和指针所指内容的修改限制。同时,文章指出使用const修饰的变量具有只读属性,且const修饰的指针在声明时必须初始化。

const 修饰指针

const 修饰指针有以下三种情况:

  • A:const 关键字出现在 * 的左边:指针指向的内容不能被修改
  • B:const 关键字出现在 * 的右边:指针本身不能被修改
  • C:const 关键字出现在 * 的两边:指针指向的内容和指针本身都不能被修改

下面用一个实例解释说明三种情况的区别

#include <iostream>
using namespace std;
int main()
{
    int a = 1;
    int b;
    
    // 指向const的指针,指针指向的内容不能被修改
    const int *p1;
   
    // const指针,指针本身不能被修改,必须初始化
    int *const p2 = &a;
    
    // 指针本身和它指向的内容都是不能被改变的所以也得初始化
    const int* const p3 = &a;
    
    p1 = &a; 	//T (指针本身的值可以改变)
    *p1 = 8; 	//F (指针指向的内容不能被修改)
    
    *p2 = 5; 	//T (指针指向的内容可以改变)
    p2 = p1; 	//F (指针本身的值不能改变)
    
    p3 = p2;	//false(指针本身是不能被改变) 
    *p3 = 4; 	//false(指针指向的内容不能被改变) 
    
    return 0;
}

const 是 constant 的简写,只要一个变量前面用const来修饰,就意味着该变量里的数据可以被访问,不能被修改。也就是说 const 意味着只读(readonly)

规则:const离谁近,谁就不能被修改

A
const int *p1;
//可以理解为
(const int) *p1;

此时 P 是指向 const intint const 类型的指针,因此是指针指向的内容不能被修改

B
int *const p2 = &a;
//可以理解为
int *(const p2) = &a;

此时 const 是修饰 p,表示 p 是不可被修改的,p 是指针对象,因此指针是不可修改的

值得注意的:因为指针指向的内容不能改变,一旦声明之后就不能进行赋值操作,因此声明的同时必须初始化

C

容易看出第三种情况是前两种情况的结合,这里不做过多解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值