在线等待:vc++中const的运用,不太明白,希望大家能指点一下~

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:06:51
如下:
#include<iostream.h>
void main()
{
const int a=5;
a=a+1;
cout<<a<<endl;
}
编译后,它会说a=a+1错误,这个我明白.因为a是const型,而等号左边必须是变量.
再看如下类似:
#include<iostream.h>
void main()
{
const char *a="12345";
a=a+1;
cout<<*a<<endl;
}
这样子编译和运行都没问题,且显示为2.如果去掉了const我能够明白.但是为什么加上了const却还能编译呢?它跟上面不是应该一样吗?
哪位高手能简单明了的解释一下???谢谢了~ 小弟我没时间在线等了,哪位高手知道的话给我留言吧~

const是定义常量的关键字
第一段代码中,当用const申请整型的a的时候,a成为了常量,不再是一个变量了,所以a值不能改变。因此编译不能通过。
同理,第二段代码中,要区别的是:
const char *a;申请的是一个常量指针,其特点是:指针指向的地址可变,指针指向地址的值不可变;
如为char* const a;则申请的是一个指针常量,其特点是:指针指向的地址不可变,指针指向地址的值可变,与常量指针正好相反。

在定义变量前加一个const就相当于是一个常量了,常量是不能赋值的。所能第一个编译不能通过

但const char *a;是一指向常量的指针,那么a是一个指向常量的地址,可以变。但他的内容不能变,是一个常量.如:你用*a = *a +1就不行。

const为强调没有实际意义