常量和静态变量和常量的区别有什么区别

C/C++文字常量与常变量的概念与区别
博客专家
C/C++文字常量与常变量的概念与区别
以下代码使用平台是Windows 64bits+VS2012。
在C/C++编程时,经常遇到以下几个概念:常量、文字常量、符号常量、字面常量、常变量、字符串常量和字符常量,网上博客资料也是千篇千律,不尽相同,弄得大家云里雾里。本文将尝试为大家捋清楚以上易混淆概念的定义,关系和区别。
常量指值不可改变的量。在C/C++中常量分为两种:文字常量(Literal constant)和常变量(constant variable)。
文字常量和常变量的本质区别:文字常量编译之后存储在代码区,不可寻址,常变量存储在数据区,可寻址。
1.文字常量
文字常量又称为“字面常量”,包括数值常量、字符常量和符号常量。其特点是编译后写在代码区,不可寻址,不可更改,属于指令的一部分。
这条语句出现编译错误,原因是文字常量不可寻址,因而无法为文字常量建立引用。
下面这条语句又是合法的:
const int& r=5;
原因是编译器将一个文字常量转化成常变量的过程。在数据区开辟一个值为5的无名整型常变量,然后将引用r与这个整型常变量进行绑定。
数值常量:包括整型常量和实型常量。整型常量就是指常整数,有十进制、八进制、十六进制三种表示形式。实型常量只采用十进制小数形式和指数形式表示,包括单精度浮点数(float)、双精度浮点数(double)和长双精度浮点数(long double)。
float b=4.4
double c=1.4e10
字符常量:指单个ASCII码字符,有256个,如’a’和’b’。
符号常量:用标示符代表一个常量,使用之前必须定义。
#define NUM 100//NUM为符号常量,100为整型常量
enum Weekday{SUN, MON, TUES, WED, THU, FRI, SAT};
常变量指定义时必须显示初始化且值不可修改的变量。与其他变量一样被分配空间,是可以寻址的。注意,字符串常量是常变量的一种,名称为其本身,因为其存储在静态存储区的常量区,可寻址,不可修改。
cout&&&”hello world”&&
常变量在C/C++中由const关键字来定义,分为全局常变量和局部常变量。
二者的区别在于:全局常变量存储在静态存储区的常量区,属于只读内存,不可修改。局部常变量存储在栈区,在高级语言语义层面上由编辑器做语法检查来保障其值不可修改,因不是放在只读内存中,可以获得局部常变量的地址,间接进行修改。有关C/C++程序内存分区可参见博客
参考如下代码:
#include &iostream&
using namespace std;
const int con1=3;
void showValue(const int& i)
int main(int argc,char* argv[])
const int con2=4;
int* ptr=NULL;
ptr=const_cast&int*&(&con2);
showValue(con2);
cout&&"con2:"&&con2&&
ptr= const_cast&int*&(&con1);
程序1处输出5,表明局部常量con2的值已经被修改,2处输出为结果仍然为4,并不是说明常变量con2的值没有被修改,而是因为编译器在代码优化的过程中已经将con2替换成了文字常量4。程序3处,运行时出错,表明全局常变量存储在只读内存,无法间接改写。
本文难免不足错误,欢迎同仁留言批评指正!
[2]百度百科.符号常量.
[3]百度百科.字符常量.
[4]百度百科.常量.
[5]陈刚.C++高级进阶教程[M].武汉:武汉大学出版社,2008.
我的热门文章
即使是一小步也想与你分享09-0507-1607-1108-17
04-2704-2704-2704-27
◇本站云标签扫二维码下载作业帮
1.75亿学生的选择
下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
问下常量和变量怎么区别 怎么在题里面看出常量和变量尽量说清楚点 主要是要初三还有就是自变量的取值(可以举列说明好)自变量的取值可不可以说得更明确点我还是不太懂,
扫二维码下载作业帮
1.75亿学生的选择
例如:C=2πr2π是常量,r是变量
为您推荐:
其他类似问题
常量是实际的一个数,就是实数.变量就是字母,简单就这样了
常量,就是固定不变的量,如y=kx+6中6,如,当速度,距离,和时间中,距离不边,那么距离就是常量,同样,变量就是变化的量
常量就是不变的量,确定的量,也可以称之为值。变量,顾名思义就是变化的量或值。比如简单的自由落体运动平均速度v=1/2gt,其中,g表示重力加速度,就是一个常量,大约等于9.8M/s^2。而其中t就是变量,时间变量。实际上来说,t的取值是有限的,因为无论如何,此物体总是要落到地上。t等于0时就是初始时刻。再举一个简单的一次函数来说明,比如y=2x+1,其中斜率2以及常数1就是常量...
常量就是固定不变的量,变量就是可以随着另一个值的变化而变化的,不是固定的。例如Y=2X+5中,2和5是常量,Y,X是变量,如果X变了,Y也随之变化,同理,Y变了,X也会跟着变。自变量的取值啊,他这个是有很多取值的。例如(题):A,B两地相距20千米,小红以每小时4千米的速度由A地步行前往B地,设小红与B地的距离为Y(千米),步行时间为X(小时),求Y关于X的函数关系式,并求自变...
扫描下载二维码

我要回帖

更多关于 简述常量和变量的区别 的文章

 

随机推荐