指针常量和常量指针

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38131333/article/details/79974683

一、首先教大家如何区分指针常量、常量指针(知乎大神介绍《c primer plus》中的方法)

      现列出指针常量和常量指针的各种写法:

  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;

第一种是常量整数,这个很容易确定;

接下来就是重头戏了:

要介绍的方法就是:从右往左读,遇到 p 就替换成 “p is a”遇到 * 就替换成“point to”。

就上面的各种写法举例:2. 读作 p is a point to int const

                                     翻译为 p是一个指向整型常量的指针,常量指针

                                    3. 读作 p is a point to const int       可以看出 3. 和 2. 是一样的;

                                    4. 读作 p is a const point to int

                                    翻译为 p是一个常量,指向int,指针常量

                                    5.读作 p is a const point to int const

                                   翻译为 p是一个常量,指向整型常量

                                    6. 同理跟 5. 是一样的

现在是不是很容易就能分清 指针常量 和 常量指针了呢?

还有一种更简单的辨别方法:

首先写出   int  * p   划分位置,(1)  int (2)    *  (3) p

const 在(1)(2)位置的意义是一样的,const  int  *p, int  const  *p ——const解释为常量,*解释为指针,那么从左向右读便是常量指针

const在(3)位置上,int  *  const  p  —— 同样*解释为指针,const解释为常量,此为指针常量

总结是 const “离谁近,修饰谁”。

二、那我们接下来看一下 指针常量 和 常量指针的 具体概念

1. 指针常量:指针本身是常量。它指向的地址是不可改变的,但地址里的内容可以通过指针来改变,指针常量在定义时必须同时赋初值。

2.常量指针:指向常量的指针,它指向的内容不能发生改变,不能通过指针来修改它指向的内容。但是,指针自身不是常量,它

                    自身的值可以改变,从而指向另一个常量。

 

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页