指针常量和常量指针

常量指针是指指针指向的对象是常量,即你不能通过这个指针来修改它所指向的数据的值。但是,你可以改变指针本身的值,即让它指向另一个地址。

申明方式:

const int *ptr;

指针常量是指指针本身是常量,即你不能改变指针的值(即它指向的地址),但你可以通过这个指针来修改它所指向的数据的值(如果数据本身不是常量

申明方式:

int *const ptr;

另外

const int* const ptr; 

这里ptr既是常量指针也是指向常量的指针,即不能改变ptr的值,也不能通过ptr改变它所指向的值。

具体情况:

int main(int len, char *arg[])
{
    const int y = 100;//常量,只能在定义的时候初始化赋值
    // y = 1000;//错误,不能修改常量的值
    // int * p = &y;//错误,不能用普通指针指向常量的地址,否则你就可以通过指针对内容进行修改
    const int * p = &y;//定义了一个指向常量的指针(常量指针),该指针不能修改所指向的内容
    // *p = 1000;//错误的
    int z = 100;
    const int * p1 = &z;//定义了一个指向常量的指针(常量指针),指向了一个普通变量的地址
    // *p1 = 1000;//错误的,尽管该指针指向了普通变量,但它是一个常量指针,所以它不能改地址里面的内容
    p1 = &y;//正确,可以修改自己的值

    int w = 100;
    int * const p2 = &z;//定义了一个指针常量,指针自己是一个常量,只能初始化赋值
    *p2 = 1000;//可以该所指向的内容
    // p2 = &w;//错误的,不能改变自己的值

    const int * const p3 = &z;//?

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值