常量指针
Coddy C++ 指针 课程的第 5 课,共 14 课。
常量指针是指初始化后其值(它指向的内存地址)不能更改的指针。不过,它指向的内存位置中的值可以修改。提到常量指针时,主要有两种类型的指针:
- 指向常量的指针:指向一个常量值
- 常量指针:始终指向一个值
那么,它们有什么区别呢?
1. 指向常量的指针
这种类型的指针指向一个常量值。不能通过这个指针修改该值。这意味着它是一个普通指针,只是指向一个常量值。使用这种指针时,它指向的地址可以更改。
int a = 5, b = 10;
// 指向常量 int 的指针
int const * ptr = &a;
// 这样做是允许的:
ptr = &b; // 更改指向的地址
// 这样做是不允许的:
*ptr = 10; // 尝试修改常量值2. 常量指针
常量指针指向一个非常量值,但指针本身不能改为指向其他地址,也就是说,它指向的地址是固定的。
int a = 5, b = 10;
// 指向 int 的常量指针
int * const ptr = &a;
// 这样做是允许的:
*ptr = 10; // 修改非 const 值
// 这样做是不允许的:
ptr = &b; // 尝试修改常量指针保存的地址如你所见,对于指向常量值的指针,const 关键字放在 * 前面;对于指向非常量值的常量指针,const 放在 * 后面。我们也可以将两种情况结合起来,让常量指针指向一个常量值。为此,我们要在星号前后各使用一个 const 关键字,不过这种情况很少用到。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
挑战
简单从输入中读取两个数字,创建一个常量指针 constPtr 和一个指向常量的指针 ptrConst,将 constPtr 初始化为指向第一个数字,然后将它的值改为第二个数字,并将 ptrConst 设置为指向第二个数字。
亲手试试
#include <iostream>
using namespace std;
int main() {
// 在这里输入代码
// 不要修改下面的代码
cout << "a = " << a << endl;
cout << "b = " << b << endl;
if(&a == constPtr)
cout << "&a == constPtr" << endl;
if(&b == ptrConst)
cout << "&b == ptrConst" << endl;
return 0;
}C++ 指针中的所有课
自己练习: C++ 在线编译器