| const修饰内容 | 结果 | 
|---|---|
| const int a=10; int *p=&a; *p=100;  | 可以通过一级指针修改指针指向的地址和指向地址值 | 
| const int*p=&a; p=&b; *p=100;  | const修饰指针类型,可以改变指针指向的地址 | 
| int* const p=&a; p=&b; *p=100;  | const修饰指针变量,可以修改指针指向地址的值 | 
| const int* const p=&a; p=&b; *p=100;  | const修饰指针类型和变量,都不可以修改,可以通过二级指针修改 | 
    int a = 100;
    int b = 200;
//指向常量的指针
    //修饰*,指针指向内存区域不能修改,指针指向可以变
    const int *p1 = &a; //等价于int const *p1 = &a;
    //*p1 = 111; //err
    p1 = &b; //ok
//指针常量
    //修饰p1,指针指向不能变,指针指向的内存可以修改
    int * const p2 = &a;
    //p2 = &b; //err