const
const
意义:取代预编译指令,消除缺点,继承优点。
概论:const修饰的数据类型——常类型(常类型的变量或对象的值是不能被更新的)
|
const int n = 1; int a[n]; 上面这样在C编译器中是错误的。 常量——被编译器放在内存中的只读区域,当然也就不能够去修改它。 只读变量——在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改。 C语言关键字const就是用来限定一个变量不允许被改变的修饰符,可惜再怎么修饰也不是常量。 而ANSI C规定数组定义时长度必须是"常量","只读变量"也是不可以的。"常量"!="不可变的变量"
另:在标准C++中,这种写法是对的。 |
作用:
(1)定义const常量,具有不可变性。 修改会产生错误。
(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。(不太明白这点用处在哪)
(3)方便地进行参数的调整和修改。(继承宏定义的优点)
(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。(不太明白和1有什么区别)
(5)节省空间,避免不必要的内存分配。 定义const变量的时候并没有把变量放入ROM中
const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是像#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干份拷贝。
(6) 提高效率,
编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
(摘自:https://blog.csdn.net/qq_36958104/article/details/89764410?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163413494316780366571906%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163413494316780366571906&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v29_name-1-89764410.pc_search_result_control_group&utm_term=const&spm=1018.2226.3001.4187)

浙公网安备 33010602011771号