有一段时间我对常量成员在Java或C等语言中的作用感到有些困惑。我理解在源代码级别,它们会阻止某些关键成员发生变异和更改,但是在编译或解释时,它们和变量成员之间是否存在任何差异,或者它们都只是指向内存地址的指针?
我认为编译器/解释器可能必须实现一些特殊的东西以允许变量变为可变的,这在处理常量成员时可能不需要(可能使执行速度更快或者使用更少的内存? ),这是真的还是我完全错了?
答案 0 :(得分:1)
执行代码后,const变量和变量不会存储在同一个地方。常量值将随程序一起进入闪存。变量也将进入闪存,但随后将被复制到ram中,以便在程序运行时进行修改。制作变量const使您的计算机不会推动内存中的所有内容,从而节省时间和空间。当你需要修改它时,无论如何你都会将它推入Ram中,但大多数时候const变量都不会被修改。 这是软件事实的补充,您可能希望阻止代码错误地修改值。