常量和常变量有啥区别没

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常量和常变量有啥区别没相关的知识,希望对你有一定的参考价值。

参考技术A

1、占用空间不同

常量不占用内存空间,在预编译时就全部由符号常量的值替换了,而常变量占用内存空间,只是此变量在存在期间不能重新赋值。

2、能否在计算中改变

常量在计算机程序运行时,不会被程序修改的量。常变量在运算时时是指赋予的一系列值,所以常变量值不是唯一的。

扩展资料

在除了‘C/C++’的一些高级程序语言中,“常量”可以被称作,“在一个信息变化过程中,始终不发生改变的量”,其可以是不随着时间变化的某些量的固定信息;也可以表示为某一数值的字符(或字符串),常被用来标识、测量和比较两者的差异。

但在 ‘C/C++语言中’,‘常量’如果还用‘运行过程中不变的量’来描述,就显得不准确,甚至是在具体使用时,这就是一个错误的概念。

在 ‘C/C++’中,定义‘指针常量’时,根据‘const ’的位置的不同,可以定义出几个不同的形式,虽然其看起来‘符合常量的概念’,但是在实际运行中,其值或地址值是会发生变化的。所以本质还不是‘常量概念’。

参考资料来源:百度百科—常量

参考资料来源:百度百科—常变量与符号常量

通过尽可能多地定义常量而不是变量,Swift 有啥好处吗?

【中文标题】通过尽可能多地定义常量而不是变量,Swift 有啥好处吗?【英文标题】:Is there any gain in Swift by defining constants instead of variables as much as possible?通过尽可能多地定义常量而不是变量,Swift 有什么好处吗? 【发布时间】:2014-08-30 06:01:35 【问题描述】:

在 Swift 中通过定义尽可能多的常量 x vars 是否在速度、内存使用等方面有任何提升?

我的意思是,尽可能使用let 而不是var 进行定义?

【问题讨论】:

【参考方案1】:

理论上,速度或内存使用量应该没有差异 - 在内部,变量的工作方式相同。在实践中,让编译器知道某些东西是常量可能会带来更好的优化。

然而最重要的原因是使用常量(或不可变对象)有助于防止程序员出错。方法参数和迭代器默认为常量并非偶然。

使用不可变对象在多线程应用程序中也非常有用,因为它们可以防止一种类型的同步问题。

【讨论】:

“理论上,速度或内存使用应该没有差异 - 在内部,变量的工作方式相同。”这对我来说听起来真的不对吗?如果您执行“让 a = 5”,则不会有任何“实例变量”。这是一个常量 Int 数,不需要为此分配内存。 CPU 也不需要从 RAM 中获取值。毕竟它是恒定的,并且会比变量快得多。所以是的,如果某些东西是不变的,那么声明它,它会给你更快的代码。除非你的大部分程序在其他人的框架中运行 - 也就是 Cocoa/UIKit ;-) @hnh 这正是我正在谈论的优化之一。即使使用var a = 5,编译器也可以决定它并不真正需要该变量(因为它知道如何使用该变量)因此不必有区别,let 只会使编译器能够更好地优化。

以上是关于常量和常变量有啥区别没的主要内容,如果未能解决你的问题,请参考以下文章

C语言里符号常量和常变量有啥区别?

C ++中的临时变量和常量有啥区别?

字符常量和字符变量有啥区别?

用#define 定义的常量与变量有啥区别,啥时候应该使用define定义符号常量

Objective-C/Swift中定义常量有啥区别?

C语言中用const声明全局变量赋初值和不赋初值有何区别?变量存放位置有啥不一样?