C++杂谈const限定符与const指针

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++杂谈const限定符与const指针相关的知识,希望对你有一定的参考价值。

const限定符

c++有了新的const关键字,用来定义常变量,可以替C语言中的#define。关于const限定符,有以下需要注意:

1.创建后值不再改变

2.作用范围在文件内有效

3.添加extern关键字,使多个文件共用同一个常变量

另外,int const与const int是等效的。

 

const指针

创建const指针时,const,*和变量类型的符号顺序会给人很大的困扰。一般来说,按照从右向左读的方式来判断其含义。

1.

const int *p=&i;

与下面的语句等效。

(const int) *p=&i;

代表指向const int类型的指针。

2.

int *const p=&i;

与下面的语句等效

int *(const p)=&i;

代表指向int类型的常指针。这个指针一直指向i,不可以改变指针指向的位置,可以改变所指向的变量的值。

*p=5;//正确

3.

const int *const p=&i;

代表指向常变量的常指针,不可以改变指针的指向,也不可以改变指针所指变量的值。

*p=5;//错误

所指的类型是const int,不可以修改它的值。

这里,左边的const叫做底层const,右边的const叫做顶层const

 

判断const指针的简便方法

把*读作"pointer to",从右至左念:

b是一个常量

const int b;  /* b is a int const */
int const b;  /* b is a const int */

p是一个普通指针,指向一个常量

const int *p; /* p is a pointer to int const */
int const *p; /* p is a pointer to const int */

p是一个常量指针,指向一个普通变量

int *const p;  /* p is a const pointer to int */

p是一个常量指针,指向一个常量

const int *const p;  /* p is a const pointer to int const */
int const *const p;  /* p is a const pointer to const int */

以上是关于C++杂谈const限定符与const指针的主要内容,如果未能解决你的问题,请参考以下文章

const与指针

深入理解C++的const限定符

《挑战30天C++入门极限》入门教程:C++中的const限定修饰符

C++中的const关键字深入理解(关于引用指针顶层const)

C++中const啥意思?

C++ NULL 指针和 const 正确性