const是什么?
const在C语言里面有什么作用,在内存里有什么用?
定义它的类型有什么用?
[解决办法]
定义它是防止程序员无意中将它值改变
[解决办法]
只读
[解决办法]
只读
[解决办法]
常量
[解决办法]
大家来探讨一下
这个 const 在内部是怎么实现的
我认为是在内存中对这个变量有一个修改权限的作用
编译器应该知道这个变量的首地址和变量类型
那编译器是对每个变量都做相应的检查
还是仅对加 const 的变量做相应操作
我认为是用后者的方法来实现的
对于加 const 的变量编译器就加上内存修改权限的锁定
不知道我想的对不对
望下面的朋友有更精彩的回复
[解决办法]
静态常量,不能够修改
[解决办法]
不是,编译器不会管理内存读写权限。验证方法如下:
int main()
{
const int a = 1;
int *p = (int*)(void*)&a;
*p = 10;
printf( "%d ",*p);/*输出结果是10,说明我们对这块内存进行了写入。
为什么我们不用printf( "%d ",a)呢?因为编译器有优化作用,在程序执行之前就将这句
换成了print( "%d ",1);因此这样会输出1。但如果你调试一下,就会发现变量a的值的确变为10了。*/
return 0;
}
就像C++里也可以用此类方法修改类的私有成员数据一样,编译器是不是监视内存区域的,它也无法去检查,因为正在编译的程序根本就还没开始运行,系统根本就没分配内存给它。何谈监视内存区域呢?编译器只能对显式的“违规行为”做出阻止,而对这种隐式“犯罪”不闻不问。
另外说明一下,还是因为编译器的优化,你在程序中的句子比如b=a它也会优化为b=1,因此即使你在程序的中间过程中修改了a的值,你也没有能够得到修改后的值。
[解决办法]
楼上正解。
const 一般是用在接口放面,以显示的提醒程序员此处不能修改。有很多方法可以绕过他。
[解决办法]
在c 语言里,const是不可修改数值的变量,它有地址,
但是地址里的内容不可以改变,
但是在c++中const就是一个常量,
用const声明的只是一个符号,那个符号就只代表其声明时的数值.
不应该在c语言和c++中误认为其是相同的.
[解决办法]
啊?C语言哈,呵呵,不好意思哈。晕了。
我这没有纯C的编译器,所以不找方法了。各位达人再研究下吧,呵呵。
[解决办法]
const :
在C里面是只读。
C++ 常量。
我的是正解^_^
[解决办法]
在C中,定义一个const形对象是会分配空间的,并且这个空间具有全局
域,因此如果一个const定义在header中,那么如果这个header被多个c
源文件包含的话,就会产生multiply defined symbols的错误。
可以通过增加static的方式将它的连结属性变成局部的就可以了。
在C++中,const默认具有static连结域,因此在C++中可以在header中
定义const。
[解决办法]
常量,无法修改
[解决办法]
const是一种约束,声明者不欲修改其值。
to huang3407:
C++中没有finaly。你说的是Java中的final吗?