1. const int* p
和int const* p
这2个是一样的,你看这2个的const
都在*p
的前面,也就是说,不能通过指针解引用去修改值,而指针本身是可以去指向另外的变量的。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int i = 43;
int j = 23;
int k = 12;
const int* p1 = &i;
int const* p2 = &j;
*p1 = 34; // 会报错
*p2 = 56; // 会报错
p1 = &k;
p2 = &k;
return 0;
}
2. int* const p
这个const
直接修饰的是p
,也就是说p
不能去指向别的地方。不过,可以通过指针解引用去改变指向的位置的值。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int i = 43;
int j = 23;
int k = 12;
const int* p1 = &i;
int* const p3 = &j;
p3 = &k; // 会报错
*p3 = 7;
return 0;
}