常量指针和指针常量

    int x = 5;
    int y = 10;
    const int* p = &x;  //可以理解为修饰的是 这个内存中的地址里的值 不可修改   常量指针
    int* const q = &x;  //指针本身是可读的  const修饰的是指针本身       指针常量
    cout << q << endl;
    //*p = 8;    //报错,不可修改
    *q = 8;     //不报错,可以修改
    //q = &y;   //报错,因为常量修饰,不能赋值
    cout << q << endl;
    cout << x << endl;
void fun(const int*a)
{   
    int b = 89;
    a = &b;
    //*a = 65;  //const修饰的是a,表达式必须是可修改的左值
    std::cout << "传入:" << a << std::endl;
}
int main()
{
    int a = 10;
    std::cout << "初始值:" << &a << std::endl;
    fun(&a);
    std::cout << "计算后:" << &a  << std::endl;
}
初始值:00BDFA8C
传入:00BDF9A4
计算后:00BDFA8C

你可能感兴趣的:(常量指针和指针常量)