文章目录


文字常量和常变量

常量可以直观的理解为“值不可改变的量”。在C++中,常量分为文字常量和常变量

文字常量

文字常量又称为“符号常量”,经编译之后写在代码区,是不可寻址的。而常变量同其它变量一样被分配空间,是可以寻址的

文字常量包括数值常量、字符常量和符号常量,其特点就是编译后写在代码区,不可寻址,不可更改

程序中有些特殊的标识符或表达式由于满足文字常量的两个条件:不可寻址、不可改变,也可以将它们视为文字常量。它们分别是:静态数组名、枚举常量、全局(静态)变量首地址

常变量

如果一个常量在定义它的时候就给他赋初值,且此后它的值就不能被改变,那么这个变量就是常变量

常变量由普通变量前添加const关键字来定义

常变量的值在赋值后不能被改变并不是真的不能改变,而是对于高级语言语法上的限制,实际上常变量在运行时并不是存放在只读内存区,因此只要在程序运行时获取到变量的地址,即可对其进行修改

修改const变量的值

具体代码如下:

#include <iostream>
using namespace std;

void showValue(const int &val)
{
cout << val << endl;
}

int main()
{
const int val = 10;
int *ptr;
void *p = (void *)&val;

ptr = (int *)p;
(*ptr)++;

showValue(val);
return 0;
}

如上所示,只需获取val的地址,即可对其进行修改