当立即数处理。比如
i = i + 10000
这个10000,不是变量,不占数据空间。
点赞  2009-2-5 08:43
引用: 引用 20 楼 singlerace 的回复:
当立即数处理。比如
i = i + 10000
这个10000,不是变量,不占数据空间。


10000,不占空间那保存在哪里了?
点赞  2009-2-5 09:05
const 修饰的标识符,默认是static作用域的,如果要全局使用,在其定义的时候要添加extern 修饰,其他文件也用extern修饰去声明。
点赞  2009-2-5 09:17
当立即数const和#define有什么区别?
const int var[1000]={0}; 也能当立即数
点赞  2009-2-5 09:18
const 修饰的可以作为全局的,哈哈
点赞  2009-2-5 09:18
大家还不明白我的问题,我问的是这样做的作用是什么?可以节省内存?节省STACK空间?可以让程序跑的更快?加CONST在形成的二进制文件里面处在那个节里面(。CODE/TEXT),不加CONST又会是在那个节里面。处在不同的节有什么区别?
点赞  2009-2-5 11:50
引用: 引用 25 楼 xqhrs232 的回复:
大家还不明白我的问题,我问的是这样做的作用是什么?可以节省内存?节省STACK空间?可以让程序跑的更快?加CONST在形成的二进制文件里面处在那个节里面(。CODE/TEXT),不加CONST又会是在那个节里面。处在不同的节有什么区别?


这样做的作用是:
1.可以节省内存空间
从汇编看:const只是给出了对应的内存地址,这样定义的常量在程序运行过程中只有一份拷贝,不象#define定义的常量在内存中有若干个拷贝。
2.可以让程序更快
因为这样做提高了效率:编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,当然效率高程序会快点。

我以前是做vc开发的,对。CODE/TEXT也是刚刚开始研究,帮不上忙了呵呵。后面你的问题我弄清楚了在交流。
点赞  2009-2-5 17:11
const常量不放在哪个section里,因为如楼上所说,它不占存储空间。当然你非要较真,可以认为它在.text section里。这好比说
mov eax, 500
500放在哪个section?只能是.text了。
点赞  2009-2-5 19:56
const 比#DEFINE有优势谁都知道,因为effective in c++里面说的很清楚了。我想知道的是,对于全局的大数组加CONST修饰的作用与优势!讨论不是STACK/HEAP里面的临时个别变量(不是立即数)。
点赞  2009-2-6 08:37
12
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复