【《C++ Primer 第四版》读书笔记】4.2.5-指针和const限定符

发布时间 2023-07-09 22:08:45作者: 孩子不坑爹

1.指向const对象的指针

1.1 表现形式
const double *ptr,const void *ptr
1.2 如何理解

无法通过ptr这个指针变量去修改所指向内存区域的值,但是ptr这种指针变量可以重复赋值,指向不同的内存地址
注意ptr这个指针变量赋值时,既可以赋值为const类型变量(书中所说的const对象)的地址,也可以赋值为非const类型变量(书中所说的非const对象)的地址

通过以下代码示例进一步理解:

const double pi = 3.14;
double x = 9.99;

const double *ptr1 = π //成立
const double *ptr2 = &x;  //成立,只是不能通过ptr2这个指针去修改x的值
double *ptr3 = &x;  //但是如果有普通double类型指针也指向x变量,可以通过这个指针修改x的值!!
*ptr3 = 1.11;
1.3 如何应用

指向const对象的指针常用作函数的形参,以确保传递给函数的实际对象在函数执行中不被修改

2.const类型的指针

2.1 表现形式
int errCode = 500;
int *const curCode = &errCode;
2.2 如何理解

这种类型的指针变量就是说本身的值不能再被修改,不能再指向别的内存区域了,必须在定义的时候完成内存区域的指向动作

注意:const类型的指针必须在定义时初始化,而指向const对象的指针在定义时不需要对它进行初始化,重点还是要区分清楚指针变量本身是否可以被修改,以及指针变量所指向的内存区域是否可以被修改

3.指向const对象的const指针

3.1 表现形式
const double pi = 3.14;
const double *const pi_ptr = π
3.2 如何理解

相当于把前两种const组合起来使用,在以上的示例中,既不能修改pi_ptr所指向对象的值,也不允许修改pi_ptr这个指针的值