const 与 指针

发布时间 2023-06-23 10:30:59作者: 胖子说嘛

const 与 指针

指向 const 对象的指针

指向 const 对象的指针,不能够修改指针指向对象的值;但是可以修改指针的指向。举个例子:就是不能更换房间内的物品,但是可以更换房间。

我们都知道,指针的值是空间中的一个地址:也就是说不能修改地址指向对象的值;但是可以给指针一个新的地址。

#include <iostream>
 
int main(int argc, char const *argv[])
{
    int pi = 300;
    const int *pint = &pi; 
    std::cout << "*pint=" << *pint << "\tpint=" << pint << endl;
    int pi2 = 400;
    // *pint = 500; //error 不能直接修改指针的指向的对象的值
    pint = &pi2; //可以修改指针的指向
    std::cout << "*pint=" << *pint << "\tpint=" << pint << endl;
    
    return 0;
}

const 指针

const 指针即常量指针。指针的值不能修改,也就是说指针指向的地址不能变,但是可以修改指向对象的值。还是用房间与物品举例子:房间不能换,但是房间内的物品可以换。

#include <iostream>
 
int main(int argc, char const *argv[])
{
    int number = 100;
    int *const pNumber = &number;
    std::cout << "*pNumber=" << *pNumber << "\tpNumber" << pNumber << endl;
    //output : *pNumber=100    pNumber0x5ffe50
    int number2=200;
    // pNumber=&number2; // error : const 指针不能指向新的对象
    number = 200; //可以修改const指针指向对象的值;指针指向的地址不变。
    std::cout << "*pNumber=" << *pNumber << "\tpNumber" << pNumber << endl;
    //output : *pNumber=200    pNumber0x5ffe50
 
    return 0;
}