初学者在学习c++时,这三者容易让人混淆,其实仔细观察他们的写法区别,就很好区分
//一下内容均以int类型为例
1.常量指针
- 写法:int *const pi;
- 理解:常量指针,即指针是常量,而指针本身就指向对象的地址.
- 特点:1. 指针指向的地址不能改变
2. 值可以通过指针改。
#include "pch.h"
#include <iostream>
using namespace std;
int main() {
int val1 = 10;
int *const pi = &val1;
cout <<"改变指针的所指地址的值之前,pi的值为: "<< *pi << endl;
*pi = 20;
cout << "改变指针的所指地址的值之后,pi的值为: "<< *pi << endl;
cout << "改变指针的所指地址的值之后,val1的值为: " << val1 << endl;
return 0;
}
2.指向常量的指针
- 写法:const int *pi;
- 理解:指向常量,即指针所指对象的值是常量,
- 特点:1.指针所指地址的值不能通过指针改变,
2.所指的地址可以改。
#include "pch.h"
#include <iostream>
using namespace std;
int main() {
const int val1 = 10;
const int val2 = 20;
const int *pi = &val1;
cout <<"改变指针的地址之前,pi的值为: "<< *pi << endl;
pi = &val2;
cout << "改变指针的地址之后,pi的值为: "<< *pi << endl;
return 0;
}
3.指向常量的常量指针
- 写法:const int *const pi;
- 理解:综合前面两者,指针是常量,指向对象是常量
- 特点 1.指针指向地址不能改,
2.该地址所存的值也不能改变