常量指针、指针常量和指向常量的指针常量

常量指针、指针常量和指向常量的指针常量

C语言中,常量指针、指针常量和指向常量的指针常量这三个概念容易混淆,今天我们来分析下这三个概念分别代表的含义。

常量指针

  • 常量指针本质上是指针,常量来修饰它,表示这个指针是一个指向常量的指针(变量)。
  • 指针指向的对象是常量,那么这个对象不能被更改。
  • const在*左边,指针变量指向常量。

案例:

#include <stdio.h>

int main() {
    const int a = 5;
    const int b = 6;
    const int *c = &a;//常量指针(表示一)(指向常量的指针;指针可以改变,指针指向的对象不能被改变)
//    int const *c = &a;//常量指针(表示二)(指向常量的指针;指针可以改变,指针指向的对象不能被改变)

    c = &b; //正确,c可以被重新赋值
    *c = b; //错误,因为他改变的是p所指向的变量的值
    return 0;
}

指针常量

  • 指针常量的本质是一个常量,并且使用指针来修饰它,说明这个常量的值应该是一个指针。
  • const在*右边,指针常量指向变量。

案例:

#include <stdio.h>

int main() {
    const int a = 5;
    const int b = 6;
    int *const c = &a;//指针常量(指针类型的常量;指针不能改变,指针指向的对象可以改变)

    c = &b; //错误,指针常量是指该指针指向的地址是不可更改的
    *c = b; //正确,指针常量指向的地址不可更改,但是地址中的变量是可以进行更改的
    return 0;
}

指向常量的指针常量

  • 指向常量的指针常量本质是一个常量,并且他指向的对象也是一个常量。
  • const在*两边,指针常量指向常量。

案例:

#include <stdio.h>

int main() {
    const int a = 5;
    const int b = 6;
    const int *const c = &a;//指向常量的指针常量(指针不能改变,指针指向的对象不能改变)

    c = &b; //错误,该指针指向的地址是不可更改的
    *c = b; //错误,该指针指向一个常量,不能更改
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值