美文网首页
常量、常量区

常量、常量区

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

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

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

数学中

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

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

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

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

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

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

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

常量的形式

常见的常量形式有几种:

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

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

常量的存储

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

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

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

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

相关文章

  • 常量、常量区

    量(liàng)作为名词的几种常见释义: 量器,计算物体容积的器具 数目、规模(能量、容量、质量)。数学中常用,量...

  • 动态内存分配

    1.内存划分 栈区:存储局部变量和函数参数(遵守先进后出规则。) 常量区:整型常量,字符常量 ,字符串常量等 (...

  • [Swift]-基本语法

    变量与常量 声明常量与变量 声明常量或变量时进行类型标注 开发中尽量使用常量,因为常量运行效率跟高。 命名规则 区...

  • iOS内存管理

    内存五大区: 代码区:存放我们写的代码 常量区:存储常量字符串和const常量 静态区:存储全局变量和静态变量。在...

  • 19·iOS 面试题·什么是 ARC ?(ARC 是为了解决什么

    前言 对于 iOS 内存分区有:栈区、堆区、静态区、全局区、常量区、代码区。对于静态区、全局区、常量区、代码区,对...

  • p4-equals系列:jdk1.6中,JVM字符串常量池在哪里

    在jdk 1.6及以前,字符串常量池是属于运行时常量池的,运行时常量池属于方法区,所以可以说字符串常量池位于方法区...

  • 内存管理

    首先,内存分为:栈区、堆区、全局区/静态区(存放全局变量和static静态变量)、常量区(存放字符串常量)、代码区...

  • 动态内存分配_C语言

    逻辑上的分区 栈区 堆区 静态区 常量区 代码区 代码区,常量区,静态区,堆区,栈区这个排列顺序按照地址由小到大排...

  • Java内存模式是什么?

    方法区(Method Area) 方法区(Method Area)用于存储已被虚拟机加载的类信息、常量、静态常量、...

  • NSString可能分配在内存的地方

    常量区 这两种方式创建的字符串都是字符串常量,在常量区。 指针里 这样创建的字符串使用了Tagged Pointe...

网友评论

      本文标题:常量、常量区

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