char* const p1: p1是常量(存放char型地址)(必须赋初值),指向char型

const char* p2: p2是指针变量,指向常量char型(指向地址的内容不可改变)

const char* const p3: p3是常量(存放char型地址)(必须赋初值), 且指向常量(指向地址的内容不可改变)

void main()
{
    const int a=3;//a是常量对象
    int const b=a;//b是常量对象
    char* p1=new char;
    char* const p2="123";//p2是常量对象(常指针,常量),必须赋初值
    const char* p;//指向常量的指针变量(本身的值可以改变即指向可以改变),指向的地址的内容不能改变
    p=p1;
    p="123";
//  p[0]='d';//error
    const char* const p3="123";//指向常量的常指针,是常量(必须赋初值)且指向的地址的内容也是常量(不可改变)
    //p3[0]='f';//error
    char const *p4;//p4是指向常量的指针变量,等同于   const char* p
}