常量指针与指针常量

#include<iostream>
using namespace std;

int main() {
    int a = 10;
    int b = 20;
    // 常量指针与指针常量
    // 1.常量指针  const修饰指针 指针的指向是可以修改的(指针变量中存的地址值可以修改) 指针指向的值不能改(不能通过解引用的形式修改地址中存放的内容)
    const int *p1 = &a;
    // *p1 = 20; Read-only variable is not assignable  不能通过解引用的形式去修改常量指针的值
    cout << "指针所指向的值为:" << *p1 << endl;
    // 不能通解引用的形式修改  可以直接修改原来变量的值
    a = 50;
    cout << "指针所指向的值为:" << *p1 << endl;

    // 更改指向是允许的
    p1 = &b;
    cout << "指针所指向的值为:" << *p1 << endl;

    cout << endl;
    // 2.指针常量  const修饰变量 指针的指向不可以改 但是指向的只可以改 (与上面相反)
    int *const p2 = &a;
    cout << "修改前指针所指向的值为:" << *p2 << endl;
    *p2 = 50;
    cout << "修改后指针所指向的值为:" << *p2 << endl;
    // p2 = &b; Cannot assign to variable 'p2' with const-qualified type 'int *const'  不能修改指针常量的指向
    return 0;
}