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

本文深入探讨了C++中const修饰符的使用方法及作用,通过实例详细讲解了const修饰不同类型变量的效果,包括普通变量、指针变量及两者同时被修饰的情况,帮助读者理解const如何限制变量的可修改性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义

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;

执行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值