1.当const在“ * ”之前时
如此代码
#include<iostream>
using namespace std;
int main()
{
int a = 10;
int b = 20;
const int* p = &a;
//*p = 20;
//p = &b;
cout << "*p的值为" << *p << endl;
return 0;
}
修改*p的值时的结果
修改p值时的结果
const在“ * ”之前时,意味着指针p的解引用p无法被修改,此时p的值无法被修改(即p的取地址对象a的值无法被修改),但此时指针p未被const修饰,故指针p的值可以被修改(即p的取地址对象可以被修改)
2.当const在“ * ”之后,p之前时
#include<iostream>
using namespace std;
int main()
{
int a = 10;
int b = 20;
int* const p = &a;
//*p = 20;
//p = &b;
cout << "*p的值为" << *p << endl;
return 0;
}
修改*p的值时的结果
修改p值时的结果
const在“ * ”之后时,意味着指针p的值无法被修改,此时p的值无法被修改(即p的取地址对象可以被修改),但此时指针p的解引用p未被const修饰,故此时p的值可以被修改(即p的取地址对象a的值可以被修改)