一 "const" 修饰变量

只能被初始化和读取,不能被赋值更改,且必需初始化,不初始化的话会因为读取到随机数而报错。

example:

const int date=100;

cout<<"date = "<<date;

//结果为100;

注意:如果以常量初始化,使用const之后,并不是立马开辟空间给date,而是事先存放在“符号常量表”中,当对date取地址时,系统才会为date开辟空间。

个人感觉有点类似于map.find。

后补:感觉引用map.find不合适哦,似乎应该是ASCII码值的感觉更贴切。

但是可以导出数据来进行二次更改

example:

const int date=100;

int *p=(int *)&date;//经过实践,这里的原因是要把const int *强制转换为int *,所以才有了(int *)。

*p=2000;

cout<<"*p"<<*p;//结果为2000。

cout<<"date"<<date;//结果为100。

这里就是把date的值装到*p里面去,所以对*p操作不影响,也不会报错

但是去找date,依旧是输出了100。

如果以变量初始化,那么const会立即开辟存储空间(没有符号常量表)

example:

int a=10;

const int date=a;

cout<<date;//结果是10。

最后,const修饰只读变量时,如果是自定义类型变量来进行初始化,也会立刻开辟空间(比如结构体等)

二 "register" 尽量将变量放入CPU的寄存器里

register的功能是尽量将变量放入CPU的寄存器当中,目的是提高读取速度。

寄存器可容纳的数量有限,所以并不是100%成功。

example:

register int a=100;//顺利的话,变量a已经被放入CPU里面的寄存器里了

cout<<a;//输出100;

注意:尽量不要对使用了register的变量进行取地址的操作(例如&a),因为取地址针对的是内存里的地址。因此其实反过来说,任何可以通过register操作还能进行&操作且不报错的,说明没有把变量成功的放入寄存器中,且编译器会检查该变量是否被频繁使用来进行判断。

最新文章

  1. jQuery基本语法
  2. Android属性动画之ValueAnimation
  3. vi的查找与替换
  4. python中关闭文件
  5. 【iOS】iOS消息推送机制的实现
  6. 【JPA】表达条件查询的关键字
  7. Can&#39;t initialize OCI. Error -1
  8. maven项目文件乱码问题
  9. 【转】Java中本地时间的获取方法--不错
  10. js分页算法
  11. IBATIS处理typeHandler类容易范的SQLException总结
  12. CSS3学习笔记(2)-CSS盒子模型
  13. 【整理】01. jQuery.Form.js 用法分析
  14. 【转】JAVA处理线程超时
  15. java的mac自动化-自动运行java程序
  16. Activation HDU - 4089(概率dp)
  17. Node 杂技
  18. spring cloud: 使用consul来替换eureka
  19. 老周发布 UWP 应用的隐私策略(通用)
  20. ThinkPHP5 模型 - 事务支持

热门文章

  1. 【转载】rename。给文件批量改名的python脚本
  2. Python 使用mysql.connector、pymysql和 MYSQLdb(MysqlClient)操作MySQL数据库
  3. 区间(环形)dp
  4. android控制台应用binder通讯
  5. 力扣1143. 最长公共子序列(dp)
  6. 通过Jenkins在远程服务器上执行shell脚本
  7. [原创] CSS自定义IOS苹果,Android安卓的CheckBox 效果,可以根据文字大小变化而变化,内框显示文字,另外可自定大小,自定颜色
  8. SQL 查找是否”存在”,别再用 COUNT 了,真的很费时间!
  9. Win10应用商店经常遭遇打不开的情况,如错误代码0x80131500
  10. debian(deepin)/ubuntu 安装 mysql5.7