指向常量的指针和常量指针;常量指针和指针常量;指向常量的常指针;

 

今天看书看到常量指针发现和我以前看到的常量指针怎么是反的,本来以为书上是错的,然后深究一下。其实都没错,是翻译的方式不同而已,其实指的一个意思。可以划分一下:

 指向常量的指针和常量指针为一组说法,常量指针和指针常量为一组说法。

 一、pointer to a constant

叫法:有两种不同的叫法也就是第一组中的指向常量的指针,第二组中的常量指针。

形式:

long value = 9999L;
const long *pvalue = &value;
long const *pvalue = &value;     //两种写法  意思一样

         

意义:

  1. pointer to a constant指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改;
  2. 指针还可以指向别处,因为指针本身只是个变量,可以指向任意地址; 

    

*pvalue = 8888L;       //Error

value = 7777L;         //Ok

long number = 8888L;
pvalue = &number;      //Ok

  二、a constant pointer

叫法:有两种不同的叫法也就是第一组中的常量指针第二组中的指针常量。(千万不能弄混)

形式: 

long value = 9999L;
long *const pvalue = &value;

意义:

  1. 指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化;
long number = 8888L;
pvalue = &number;      //Error

*pvalue = 8888L;       //Ok

 三、指向常量的常指针

这个倒是没有什么歧义,但是写法上有两种写法

const int *const p;

int const *const p;

意义:

  1. p是一个指向常量的常量指针,所有信息都是固定不变的,不能改变它指向的内容,也不能改变存储在p中的地址;

猜你喜欢

转载自blog.csdn.net/qq_33598781/article/details/106893911