指针常量与常量指针的区别

指针常量与常量指针

  1. 对于c的初学着总是分不清常量指针及指针常量,下面我将用代码的方式直观的讲解一下这两个的区别!

  2. 常量指针

    #include <stdio.h>
    
    int main(int argc, char **argv)
    {
        int a = 10;
        int b = 7;
    
        //定义常量指针
        int const *p;
        p = &a;
        printf("p = %d\n", *p);
    
        //常量指针可以改变指针指向的内容
        p = &b;
        printf("p = %d\n", *p);
    
        //试图使用常量指针改变指向的变量的值,这种是不允许的!
        /* *p = 5; */
        
        /* 总结:常量指针可以修改指针指向的变量,但是不可以修改指针指向的变量的值!
           可以简单理解,指针被const修饰了,成为了常量指针,本质上还是指针,可以指向变量,
           但是由于const的修饰,它无法改变指向的变量值 */
    
        return 0;
    }
    
  3. 指针常量

    #include <stdio.h>
    
    int main(int argc, char **argv)
    {
        int a = 10;
        int b = 7;
    
        //定义指针常量
        int *const p = &a;
        printf("p = %d\n", *p);
    
        //指针常量可以修改指针指向变量的值
        *p = 5;
        printf("a = %d\n", 5);
        
        //使用指针常量试图修改指针指向的变量,这种是不允许的!
        /* p = &b; */
        
        /* 总结:指针常量可以修改指针指向的变量的值,但是不允许修改指针指向的变量,
           简单的来说:由于const修饰的是变量,那么就可以理解成这个变量是常量的,不允许修改了,
           但是指针是在const前面的,并没有被const修饰,所以,可以修改指针指向的变量的值 */
    
        return 0;
    }
    
  4. 如果指针指向的变量和值都不允许修改,可以修改成如下:

    #include <stdio.h>
    
    int main(int argc, char **argv)
    {
        int a = 10;
        int b = 7;
    
        int const *const p = &a;
        printf("p = %d\n", *p);
    
        //不能修改指针指向的变量!
        /* p = &b; */
    
        //不能修改指针指向的变量的值!
        /* *p = 5; */
    
        return 0;
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值