c++学习1 基础关键词
一 "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操作还能进行&操作且不报错的,说明没有把变量成功的放入寄存器中,且编译器会检查该变量是否被频繁使用来进行判断。
最新文章
- jQuery基本语法
- Android属性动画之ValueAnimation
- vi的查找与替换
- python中关闭文件
- 【iOS】iOS消息推送机制的实现
- 【JPA】表达条件查询的关键字
- Can&#39;t initialize OCI. Error -1
- maven项目文件乱码问题
- 【转】Java中本地时间的获取方法--不错
- js分页算法
- IBATIS处理typeHandler类容易范的SQLException总结
- CSS3学习笔记(2)-CSS盒子模型
- 【整理】01. jQuery.Form.js 用法分析
- 【转】JAVA处理线程超时
- java的mac自动化-自动运行java程序
- Activation HDU - 4089(概率dp)
- Node 杂技
- spring cloud: 使用consul来替换eureka
- 老周发布 UWP 应用的隐私策略(通用)
- ThinkPHP5 模型 - 事务支持
热门文章
- 【转载】rename。给文件批量改名的python脚本
- Python 使用mysql.connector、pymysql和 MYSQLdb(MysqlClient)操作MySQL数据库
- 区间(环形)dp
- android控制台应用binder通讯
- 力扣1143. 最长公共子序列(dp)
- 通过Jenkins在远程服务器上执行shell脚本
- [原创] CSS自定义IOS苹果,Android安卓的CheckBox 效果,可以根据文字大小变化而变化,内框显示文字,另外可自定大小,自定颜色
- SQL 查找是否”存在”,别再用 COUNT 了,真的很费时间!
- Win10应用商店经常遭遇打不开的情况,如错误代码0x80131500
- debian(deepin)/ubuntu 安装 mysql5.7