C++中const int*, const int * const, 和 int const *区别

本文主要介绍C/C++中,const int*, const int * const, 和 int const *用法的区别,以及相关的示例代码。

1、const int*, const int * const, 和 int const *简介

int* :指向 int 的指针

int const * :指向 const int 的指针。

int * const :指向 int 的 const 指针。

int const * const :const 指向 const int 的指针。

const可以在类型的任一侧,如下:

const int * == int const *
const int * const == int const * const

2、常量引用

对变量(此处为 int)的引用,该变量是常量。主要是将变量作为引用传递,因为引用的大小比实际值要小,但是有一个副作用,就是实际变量的别名。我们可能会通过对别名的完全访问而意外更改主变量,因此我们将其设为常量以防止这种副作用。

int var0 = 0;
const int &ptr1 = var0;
ptr1 = 8; // 报错
var0 = 6; // 正常

3、常量指针

一旦常量指针指向一个变量,就不能指向任何其他变量。

int var1 = 1;
int var2 = 0;
int *const ptr2 = &var1;
ptr2 = &var2; // 报错

4、指向常量的指针

一个不能改变它所指向的变量值的指针被称为常量指针。

int const * ptr3 = &var2;
*ptr3 = 4; // 报错

5、常量指针

指向常量的常量指针是一个指针,既不能改变它指向的地址,也不能改变保存在该地址的值。

int var3 = 0;
int var4 = 0;
const int * const ptr4 = &var3;
*ptr4 = 1;     // 报错
 ptr4 = &var4; // 报错
推荐阅读
cjavapy编程之路首页