常量、常量区
2021-01-15 本文已影响0人
Tenloy
量(liàng)作为名词的几种常见释义:
- 量器,计算物体容积的器具
- 数目、规模(能量、容量、质量)。数学中常用,量是非负实数,实数的量通常称为绝对值或模,复数的量称为模
- 物理中的量:也可以称为物理量,是指一个事物(现象、物体、物质)的一种可定性区别和定量确定的属性。如重轻、宽窄、大小、多少等。
量有两个基本分类:幅度和重次(数字,重复次数),即连续量和离散量。
量都是用数字和单位联合表达的。一般先选几个独立的物理量,如长度、时间等,并以使用方便为原则规定出它们的单位。
数学中
变量,是指没有固定的值,可以被改变的量。变量以非数字的符号来表达,一般用拉丁字母。
常量,是指值始终不变的量。
计算机中(以C语法为例)
常量:在计算机程序运行时,不能被程序修改的量。(常量、变量并不是专门为计算机引入的概念)
常量可区分为不同的类型,如:
- 整型常量,如25、0
- 实型常量,如6.8
- 字符常量,如‘a’、‘b’
- 字符串常量,如"abc"等
常量一般从其字面形式即可判断。这种常量称为字面常量
或直接常量
。(字面量
:在计算机科学中,用于表达源代码中一个固定值的表示法)
常量一般出现在表达式或赋值语句中。
常量的形式
常见的常量形式有几种:
- 直接常量(字面常量):上面的字面量形式
-
符号常量:用标示符代表一个常量,使用之前必须定义
- 使用 #define 预处理器
- 使用 const 关键字。(常量是不能改变的量(常量区的数据才是真正的不能被改),const修饰的全局变量是在常量区,其他的只能算是伪常量)
- 数组名
请注意,把常量定义为大写字母
形式,是一个很好的编程实践。
常量的存储
常量是程序中使用的一个确定数值。常量的存储位置一般分两种:
-
以
数值的形式
直接编码于指令代码中。比如基本数据类型常量、数组名。数值作为指令的一部分(操作数),和指令一起存储,所以不用单独开辟主存空间,也就没法动态改变。- 数组名:是首元素地址。同普通的变量名一样,以地址的形式编码于指令中
-
常量区,编译时,以
地址的形式
编码于指令代码中。比如字符串常量
、const修饰的全局变量
。执行指令时,需要进行一次访存操作。- 为什么不都编码于指令中?常量区用于存储那些长度不定,不方便直接替换入汇编指令中的数据。
- 字符串常量:定义一个字符串常量,会在内存的常量区开辟一个空间进行存储,生命周期为整个程序运行期。之后再次出现这个字符串常量,仍然是这个地址,不会再重新申请空间。
- const修饰的基本数据类型虽然也保存在常量区,但生成指令时,会做一些优化,直接将数值编码于指令中,减少访存次数