对于C语言和c++熟悉的人都知道 const 这个修饰符的存在。在很多面试公司中,const 这个修饰符的面试题笔试题也是一直都有的,那对于const这个修饰符你真的了解吗?
问到const 这个修饰符的用处,很多人都会说,用const修饰符修饰的变量表示该变量是常亮,是只读的,无法修改的。其实对于这样的回答,是不准确的。
在C语言中的const
在C语言中,用const修饰的变量,其本质上还是个变量,只是它不允许作为左值存在,也就是不法对该变量进行直接赋值修改该变量,但是这不意味着该变量的值就无法修改。下面我们看一下这段代码:
#include <stdio.h>
int main()
{
const int a = 5;
int* p = (int*)&a;
printf("a = %d\n",a);
*p = 10;
printf("a = %d\n",a);
return 0;
}
用gcc编译器编译执行后得到的结果是:
a = 5
a = 10
从这个结果中我们也可以看出,const修饰的变量的值在C语言中并非是无法修改的,我们可以通过指针来修改该变量的值。
在C++中的const
大家都知道C++是在C语言的基础上发展起来的,所以为了兼容C语言,C++也保留了const的很多属性。
但是在C++中,const这个修饰符和在C语言中有点不同。同样的代码:
#include <stdio.h>
int main()
{
const int a = 5;
int* p = (int*)&a;
printf("a = %d\n",a);
*p = 10;
pri