你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
【3.29签到】每日问答——关键字const有什么含意?
[复制链接]
苏柚
提问时间:2016-3-29 08:35 /
阅读主题, 点击返回1楼
赞
0
收藏
0
评论
95
分享
发布时间:2016-3-29 08:35
请先
登录
后回复
95个回答
zdw28578294-599
回答时间:2016-3-29 10:22:04
a1024a.1 32b0c
签到签到
赞
0
评论
回复
支持
反对
hooke
回答时间:2016-3-29 10:25:25
a0a.1 32b0c
签到
签到
签到
签到
赞
0
评论
回复
支持
反对
james816
回答时间:2016-3-29 10:25:41
a1024a.1 32b0c
我來签到
赞
0
评论
回复
支持
反对
黑夜之狼
回答时间:2016-3-29 10:27:24
a1024a.1 32b0c
签到签到
赞
0
评论
回复
支持
反对
yanhaijian
回答时间:2016-3-29 10:41:33
a1024a.1 32b0c
天天签到。
赞
0
评论
回复
支持
反对
112207301219
回答时间:2016-3-29 10:46:31
a0a.1 32b0c
:):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):):)
赞
0
评论
回复
支持
反对
wudianjun2001
回答时间:2016-3-29 10:50:48
a1024a.1 32b0c
签到签到
赞
0
评论
回复
支持
反对
大禹
回答时间:2016-3-29 11:04:29
a1024a.1 32b0c
签到签到
赞
0
评论
回复
支持
反对
黑溱郎
回答时间:2016-3-29 11:08:53
a0a.1 32b0c
签到签到签到
赞
0
评论
回复
支持
反对
Dylan疾风闪电
回答时间:2016-3-29 11:09:56
a0a.1 32b0c
const关键字的作用主要有以下几点:
(1)可以定义const常量,具有不可变性。 例如:
const int Max=100; int Array[Max];
(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改;
(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。
(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错; 例如:
void f(const int i) { i=10;//error! }
(5) 为函数重载提供了一个参考。
class A { ......
void f(int i) {......} //一个函数
void f(int i) const {......} //上一个函数的重载 ......
};
(6) 可以节省空间,避免不必要的内存分配。 例如:
#define PI 3.14159 //常量宏
const doulbe Pi=3.14159; //此时并未将Pi放入ROM中 ......
double i=Pi; //此时为Pi分配内存,以后不再分配!
double I=PI; //编译期间进行宏替换,分配内存
double j=Pi; //没有内存分配
double J=PI; //再进行宏替换,又一次分配内存!
const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。
(7) 提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
赞
0
评论
回复
支持
反对
bjflsk
回答时间:2016-3-29 11:29:04
a1024a.1 32b0c
签到签到!
赞
0
评论
回复
支持
反对
power568
回答时间:2016-3-29 11:33:28
a0a.1 32b0c
定义一个常量...
说明该变量不可修改...
赞
0
评论
回复
支持
反对
wolfgang
回答时间:2016-3-29 11:33:55
a0a.1 32b0c
"只读"~~~~~~~
赞
0
评论
回复
支持
反对
夜色风满楼
回答时间:2016-3-29 11:34:28
a1032a.1 32b0c
签到签到
赞
0
评论
回复
支持
反对
弋江浪子
回答时间:2016-3-29 11:40:11
a0a.1 32b0c
【3.29签到】领金币
赞
0
评论
回复
支持
反对
1
2
3
4
5
6
7
/ 7 页
下一页
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
签到
签到
签到
签到
(1)可以定义const常量,具有不可变性。 例如:
const int Max=100; int Array[Max];
(2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改;
(3)可以避免意义模糊的数字出现,同样可以很方便地进行参数的调整和修改。
(4)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。 还是上面的例子,如果在函数体内修改了i,编译器就会报错; 例如:
void f(const int i) { i=10;//error! }
(5) 为函数重载提供了一个参考。
class A { ......
void f(int i) {......} //一个函数
void f(int i) const {......} //上一个函数的重载 ......
};
(6) 可以节省空间,避免不必要的内存分配。 例如:
#define PI 3.14159 //常量宏
const doulbe Pi=3.14159; //此时并未将Pi放入ROM中 ......
double i=Pi; //此时为Pi分配内存,以后不再分配!
double I=PI; //编译期间进行宏替换,分配内存
double j=Pi; //没有内存分配
double J=PI; //再进行宏替换,又一次分配内存!
const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。
(7) 提高了效率。 编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
说明该变量不可修改...