常量指针与指针常量
常量指针与指针常量
const int *p1; //常量指针,从后往前可以理解为:p1 is a pointer point to const int
常量指针:声明了一个指向整型常量的指针p1,不能通过这个指针p1去修改所指向变量的值。但是可以修改指针p1的指向,即指针p1可以指向别的同类型变量
int* const p2; //指针常量,从后往前可以理解为:p2 is a const pointer point to int
指针常量:声明了一个指针型常量,用于存放整型变量的地址,这个指针一旦初始化后,就不能被重新赋值了。即指针p2 定义的同时一定要初始化,初始化之后就一直指向一个int变量了,无法修改指向。但是可以通过指针p2去修改所指向变量的数值
#include <iostream>
using namespace std;
int main()
{
int a = 5 , b = 10;
const int* p1 = &a; //p1指针可以指向别的int变量,但是不能通过p1去修改所指变量的值
//*p1 = 6; 错误
a = 6;
p1 = &b;
//*p1 = 11; 错误
cout << a << endl; //6
cout << *p1 << endl; //10
int c = 15 , d = 20;
//int* const p2; 错误,没有初始化
int* const p2 = &c;
cout << *p2 << endl; //15
//p2 = &d; 错误,p2不可以指向别的变量
*p2 = 25;
cout << *p2 << endl; //25
}
结果
6
10
15
25