美文网首页
常量、常量区

常量、常量区

作者: Tenloy | 来源:发表于2021-01-15 13:14 被阅读0次

    量(liàng)作为名词的几种常见释义:

    • 量器,计算物体容积的器具
    • 数目、规模(能量、容量、质量)。数学中常用,量是非负实数,实数的量通常称为绝对值或模,复数的量称为模
    • 物理中的量:也可以称为物理量,是指一个事物(现象、物体、物质)的一种可定性区别和定量确定的属性。如重轻、宽窄、大小、多少等。
      量有两个基本分类:幅度和重次(数字,重复次数),即连续量和离散量。
      量都是用数字和单位联合表达的。一般先选几个独立的物理量,如长度、时间等,并以使用方便为原则规定出它们的单位。

    数学中

    变量,是指没有固定的值,可以被改变的量。变量以非数字的符号来表达,一般用拉丁字母。
    常量,是指值始终不变的量。

    计算机中(以C语法为例)

    常量:在计算机程序运行时,不能被程序修改的量。(常量、变量并不是专门为计算机引入的概念)

    常量可区分为不同的类型,如:

    • 整型常量,如25、0
    • 实型常量,如6.8
    • 字符常量,如‘a’、‘b’
    • 字符串常量,如"abc"等

    常量一般从其字面形式即可判断。这种常量称为字面常量直接常量。(字面量:在计算机科学中,用于表达源代码中一个固定值的表示法)

    常量一般出现在表达式或赋值语句中。

    常量的形式

    常见的常量形式有几种:

    • 直接常量(字面常量):上面的字面量形式
    • 符号常量:用标示符代表一个常量,使用之前必须定义
      • 使用 #define 预处理器
      • 使用 const 关键字。(常量是不能改变的量(常量区的数据才是真正的不能被改),const修饰的全局变量是在常量区,其他的只能算是伪常量)
      • 数组名

    请注意,把常量定义为大写字母形式,是一个很好的编程实践。

    常量的存储

    常量是程序中使用的一个确定数值。常量的存储位置一般分两种:

    • 数值的形式直接编码于指令代码中。比如基本数据类型常量、数组名。数值作为指令的一部分(操作数),和指令一起存储,所以不用单独开辟主存空间,也就没法动态改变。

      • 数组名:是首元素地址。同普通的变量名一样,以地址的形式编码于指令中
    • 常量区,编译时,以地址的形式编码于指令代码中。比如字符串常量const修饰的全局变量。执行指令时,需要进行一次访存操作。

      • 为什么不都编码于指令中?常量区用于存储那些长度不定,不方便直接替换入汇编指令中的数据。
      • 字符串常量:定义一个字符串常量,会在内存的常量区开辟一个空间进行存储,生命周期为整个程序运行期。之后再次出现这个字符串常量,仍然是这个地址,不会再重新申请空间。
      • const修饰的基本数据类型虽然也保存在常量区,但生成指令时,会做一些优化,直接将数值编码于指令中,减少访存次数

    相关文章

      网友评论

          本文标题:常量、常量区

          本文链接:https://www.haomeiwen.com/subject/esziaktx.html