顶层const(top-level const)
底层const(low-level const)
#include<iostream>
using namespace std;
int main()
{
//代码无法运行
int i=0;
int k=3;
const int* p=&i;
p=&k;
*p=4; //error
int *const p2=&i;
*p2=4;
p2=&k;//error
return 0;
}
const int* p等价于int const* p,都是底层const,int *const p是顶层const;
顶层const的常量指针值不会改变,即指针的值不能改变,但是指针指向的内容可以改变比。比如不能指向其它地址,但可以改变*p即指向的内容可以改变,原来*p等于0,可以令*p等于4。
底层const指向的内容不能改变,即指针指向的内容不能改变。比如可以改变指针指向的地址,但不能改变指向的内容。*p原先为0,不能令*p=4