常量和常变量(const)

50 篇文章 2 订阅

常量


1. 字面常量/直接常量

  • 数值型常量
    • 整形常量:1 2 3
    • 实型常量:1.1 2.2
  • 字符型常量(单撇号之间)
    • 普通字符型常量:’a’ ‘A’
    • 转义字符常量:’\n’
    • 字符串常量:”helloworld”

2. 符号常量

  • 用一个符号名代表一个常量
    • #define PRICE 20

常变量const


【胡思乱想】:

  • int num = 10;
    • 变量名是名
    • 变量是变量值

变量名的使用:就是当初发明c/c++语言的人,创造的一种方便程序员读写内存单元的办法,而且以不同权限声明的变量名,就有不同的读写权限,一个内存单元,被多个变量名打开。默认情况下,也就是最常使用声出来的变量名具有读写的权限。这和文件IO是一个性质的东西,但是比文件IO更简单直接。
内存单元:寄存器
指针变量名打开的那个寄存器里放:带权地址
带权地址的那个寄存器里放:权限下的档案
变量名打开的那个寄存器里放:权限下的档案

  • const :谷歌翻译:常量
  • 我理解为:只读的东西
  • 插入一个思想:文件IO
    • 变量名:我理解为问价描述符
    • 内存单元:寄存器
  • 下面为了直接,所以直接讨论变量名打开的内存单元
  • 插入一种思想:铺路设置哨卡
    • 我们平时声明紧接着定义一个变量,之后就开始拿声明的那个变量进行各种操作
    • 其实,一块内存空间,被程序使用了以后,我们可以声明其他好多变量名来操作这块内存,或者通过指针操作这块内存。
    • 于是就出现了引用,指针
    • 但是我们在声明这些变量时,可以修饰一下变量,其实就是给变量设定权限,权限可大可小,变量之间互补干涉
    • const就是一个修饰符,只赋予变量读内存空间的权限,没有写内存空间的权限,这使用与各种数据类型,因为每种数据类型都是由变量名和内存单元组成
    • 当我们给一块内存单元声明一个变量时,就相当于修了一条通向城堡的路,新声明就是铺新路,但是每条路互补交叉。
    • 路都是要限速限重的,在每个路口都有哨卡
    • 为了保护城堡,越往外,对路设的条件越苛刻,所以权限越“继承”越苛刻
    • 普通变量不可以做为const变量的引用
      • int A= 10;
      • const int B = 10;
      • int &a = A;//正确
      • int &a = B;//错误
    • const变量可以作为普通变量的引用
      • int A = 10;
      • const int B = 10;
      • const int &a = A;//正确
      • const int &a = B;//正确
  • const 放置位置
  • *

  • 插入一个思想:宇宙中的地球
    • 内存单元:上帝眼中宇宙中完整的地球
    • 指针(坐标):上帝分给各种外星人带有权限的地球坐标
      • 现在各种外星人手里都有地球的坐标,都可以到达地球,但他们要严格按照权限来做事
    • 指针变量内存单元:外星人手里的带权限的坐标
      • 由于上帝要保护地球,所以告诉外星人的地球坐标都加上了不同的权限
        • 地球 *p_a = &地球;//A类外星人拿到任意权限的地球坐标
        • const 地球 *p_b = &地球; //B类外星人拿到只能访问地球的坐标
    • 指针值(*p)内存单元:每种外星人权限下的地球
  • 再插入一种思想:学校公司
    • 10:学校、公司
    • int a = 10;
    • int b = 10;
    • int c = 10;
    • const int A = 10;
      • 学生abc都说自己去学校
      • 食堂阿姨A说自己去公司
      • 学校、公司指同一个地方
      • 自己把地点定位的性质不同,那做的事情也不同
指针常量指针变量是C/C++的两个不同的概念。指针常量是指指向常量的指针,即指针的指向是固定的,不能指向其他变量常量,但可以通过指针来修改指向的实体变量的值。指针变量是指指针变量本身是常量,即指针的值(即指针的指向)是固定的,不能改变,但可以通过指针变量来修改指向的实体变量的值。 举个例子来说明,假设我们有一个整型变量num,并声明一个指向整型常量的指针常量ptr和一个指针变量constPtr: const int* ptr; // 指针常量,指向整型常量 int* const constPtr; // 指针变量,指向整型变量 在上述代码,ptr是一个指针常量,它指向一个整型常量。这意味着ptr的指向是固定的,不能指向其他变量常量,但可以通过ptr来修改指向的整型常量的值。 而constPtr是一个指针变量,它指向一个整型变量指针变量的指向是固定的,不能改变,但可以通过constPtr来修改指向的整型变量的值。 所以,指针常量指针变量在指针的指向和修改能力上有所不同。指针常量的指向不可变,但可以修改指向的实体变量的值;指针变量的指向可变,但指向的实体变量的值不可变。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C++之指针常量常量指针和指针常量](https://blog.csdn.net/weixin_43340455/article/details/124204230)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [详解C语言常量指针和指针常量](https://download.csdn.net/download/weixin_38557980/13987495)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [区别:指针常量、指针变量常量指针和常量指针常量](https://blog.csdn.net/CYJ2014go/article/details/78203404)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值