const指针的含义

1. const int p;
    
2. const int *p;
    
3. int const* p;
    
4. int * const p;
    
5. const int * const p;
    
6. int const * const p;

最近学习的时候,发现对const指针十分的不解,特别看到下面的这六种写法就脑壳疼,所以特意写一下加深一下记忆。

首先我们来了解一下const的含义:
  const指针是指针变量的值,一经初始化,就不可以改变指向,初始化是必要的。声明指针时,可以在类型前或后使用关键字const,也可在两个位置都使用。
  定义形式:type *const 指针名称/const type *指针名称

在网上我看到了一种比较简单明了的办法去理解const。
从右往左读,遇到p就替换为“p is a”,遇到*就替换为“point to”,其余不变。

  1. const int p ----------- p is a int const
    p是一个int型常量 。

  2. const int * p --------- p is a point to int const
    p是一个指针,指向int型常量即p是一个int型常量的指针。

  3. int const * p --------- p is a point to const int
    与2相同 const int 和 int const 是一样的意思。

  4. int * const p --------- p is a const point to int
    p是一个指向int的const指针。

  5. const int * const p ------- p is a const point to int const
    p是一个指向int型常量的const指针。

  6. int const * const p ------- p is a const point to const int
    与5相同,理由同2和3。

以上是六种不同定义的区分,下面来看一下这六种定义的含义。

const double x = 1;  //x是一个常量,不能改变它的值
const double *y = &x; //普通的double指针不能指向常量,
			所以需要const
*y = 2; //错误,该操作试图改变所指对象的值。不能给*y赋值,
	   即不能改变指针所指对象的值。
cout << y<< endl;//输出y的值

//虽然不能改变其所指对象的值,但是它可以指向别的常量对象
//这样的话 指针的值(也就是存放在指针中的那个地址)也会改变 	比如:
cosnt double x2 = 3;

*y = &x2; //  *y变成3; 

cout << y << endl; //cptr的值变了

const指针表示指针本身是一个常量。由于指针是对象,因此就像其他对象一样,允许把指针本身定为常量。cosnt指针必须初始化,并且一旦初始化,const指针的值就不能改变了。const指针的值到底是什么?其实就是存放在指针中的地址,这个地址是一个对象的地址。
写完这个博客感觉我对const的理解加深了,最重要的是加深了对它的记忆。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值