const修饰指针与变量间的三种关系

定义

const定义一个常量,变成只读,中途不能做任何修改。

没有const修饰时,变量本身可以任意修改
 #include <stdio.h>
#include <stdlib.h>

int main(void){
    int wife = 24;
    int girl = 18;
    printf("老婆的初始年龄:%d\n",wife);
    printf("女孩的初始年龄:%d\n",girl);
    //第一种
    int *zha_nan = &wife;
    *zha_nan = 25;
    zha_nan = &girl;
    *zha_nan = 19;
    printf("渣男的girl: %d  渣男的wife: %d\n",girl,wife);

    system("pause");
    return 0;
}

####有const修饰时
看const修饰的是离类型(int)近,还是离指针变量名近,离谁近就修饰谁,谁就不能变。

    //第二种
    const int *zhi_nan = &wife;
   // *zhi_nan = 26;//error C3892: “zhi_nan”: 不能给常量赋值(离int近,所以不能修改wife的值)
    printf("直男老婆的年龄:%d\n",*zhi_nan);
    zhi_nan = &girl;//但指针变量还可以继续指向别的地址
    printf("直男女孩的年龄:%d\n",*zhi_nan);

    //第三种
    int *const nuan_nan = &wife;
    *nuan_nan = 26;//因为离指针变量近,所以能修改int类型wife的值
    printf("暖男老婆的年龄: %d\n",wife);
    //nuan_nan = &girl;//error C3892: “nuan_nan”: 不能给常量赋值(所以也就不能修改指针变量的值,也就是不允许指向别的地址)

    //第四种(指针变量和int类型变量都有修饰,所以相互之间都不能再修改)
    const int  *const super_nuan_nan = &wife;
    //*super_nuan_nan = 28;//error C3892: “super_nuan_nan”: 不能给常量赋值
    //super_nuan_nan =&girl;

执行结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值