c++学习2 基础关键词
三 volatile强制访问内存
在一个变量的频繁使用中,系统为了提高效率,会自动将内存里面的数据放入CPU里的寄存器里。但在某些特殊场景下,放入寄存器这个操作反倒会导致CPU无法及时获取最新的一手数据导致失误(比如烟雾报警机器)所以这个时候为了防止data数据被放入CPU里面的寄存器(防止被优化),我们要给计算机一个指令,让CPU每一次处理数据都是从内存获取的。
example:
volatile int data=0;//对data的访问,必须从内存访问(防止编译器优化)。
四 sizeof测量类型的大小
类型本身不占用空间,但是内存类型有大小。比如int类型啊,int类型占4个字节吗(4B)?不是的,是在写了 "int data;"后,这个“data”变量占用4个字节的空间(4B)。类型有大小,但是它不占空间。只有当类型定义变量的时候,这个变量才会占据相对应类型的空间大小。所以说sizeof测类型大小,倒不如说sizeof测量的是类型未来定义的变量的所占空间的大小。
example:
cout<<sizeof('a')<<endl;//c++自动识别数据类型,这个类型是“char”,大小是一个字节(1B),屏幕显示“1”。
cout<<sizeof(10)<<endl;//如法炮制,int类型,4个字节(4B)。
cout<<sizeof(short)<<endl;//2B。
cout<<sizeof(long)<<endl;//32位平台,4B。
cout<<sizeof(float)<<endl;4B。
cout<<sizeof(double)<<endl;8B。
五 typedef给已有的类型取别名
typedef不能创建新的类型,它的功能是将名称冗长且复杂的类型名取一个短小的名称。
<s> 原来是起外号(喜 </s>
typedef的使用步骤:
1.先用已有的类型名定义一个普通的变量;
2.用别名替代掉变量名;
3.在整个表达式前面加上"typedef";
example:
int num;//步骤一。
int INT666;//步骤二。
typedef int INT666;//步骤三。
INT666 a;//作用与"int a;"等效,INT666就是int类型的别名。
int b;//已有的类型不会失效被覆盖,仍让有效。
----------------------------------------------------------------------------------------------
int arr[5];
int MYARR[5];
typedef int MYARR[5];
MYARR arr={10,20,30,40,50};
for(int i=0;i<5;i++)
{
cout<<arr[i]<<" ";
} cout<<endl;
//结果是“10 20 30 40 50”。
----------------------------------------------------------------------------------------------
int *p;
int *MYP;
typedef int *MYP;
MYP p;//p的类型就是int *类型。相当于“int *p”。
typedef的好处与作用:
一:扩展系统的兼容性,提高项目的可移植性;
二:后期学习与应用结构体和类型的时候可以帮助我们简洁代码,方便好用。
c++学习2 基础关键词的更多相关文章
- 关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL))
关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 欢迎fork本项目原始链接:关于图计算&图学习的基础知识概览:前置知识点学习 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- 一步步学习javascript基础篇(3):Object、Function等引用类型
我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...
- JavaScript学习02 基础语法
JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
- IOS学习笔记之关键词@dynamic
IOS学习笔记之关键词@dynamic @dynamic这个关键词,通常是用不到的. 它与@synthesize的区别在于: 使用@synthesize编译器会确实的产生getter和setter方法 ...
- Python3学习(1)-基础篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...
- Ant学习-001-ant 基础知识及windows环境配置
一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...
- 学习javascript基础知识系列第二节 - this用法
通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...
- 学习javascript基础知识系列第三节 - ()()用法
总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...
随机推荐
- React使用高阶组件与Hooks实现权限拦截教程
导读 高阶组件就是接受一个组件作为参数并返回一个新组件(功能增强的组件)的函数.这里需要注意高阶组件是一个函数,并不是组件,这一点一定要注意,本文给大家分享React高阶组件使用小结,一起看看吧 高阶 ...
- pj_0004_time_swap
#!/usr/bin/python # -*- coding: UTF-8 -*- import time def _get_strftime_( t ): return time.strft ...
- vue-cli2.0 项目前端不能用IP局域网访问,只能localhost访问
解决办法1.config/index.js 修改 host:'localhost'为'0.0.0.0' 解决办法2.package.json 修改启动配置 -- host 0.0.0.0 优化终端 ...
- mybatis_01 初运行
maven坐标 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</ ...
- CMMI审核期间的主要流程
整个阶段大致2个月左右,正式评估大概一个星期 一 计划准备阶段,包括我们一些资料的准备,做评估计划等 二 执行评估阶段 启动会议 主要主任评估师讲,所有人员参会 会议内容:主任评估师自我介绍 ,项目信 ...
- uniapp 中获取微信小程序的原生导航栏高度
const custom = wx.getMenuButtonBoundingClientRect() // console.log(custom) that.yuansheng= custom.he ...
- git将本地文件上传到远程仓库
要记住! 上传代码之前,一定要先下拉代码,如果有冲突(你和别人同时修改了某一个文件的某一行代码),那么就要先解决冲突,才能提交! 这里以将自己的本地文件上传至git仓库为例 1.首先进入需要上传的文件 ...
- Tushare金融大数据开放社区 - 数据抽取案例学习
进入平台介绍 扫码立即注册,更多大数据等你来探索 ! 案例: 导入tushare import tushare as ts 这里注意, tushare版本需大于1.2.10 设置token ts.se ...
- docker-compose 文件
安装 curl -L https://get.daocloud.io/docker/compose/releases/download/v2.4.1/docker-compose-`uname -s` ...
- Linux 系统jdk安装详细教程
安装jdk步骤先下载jdk的tar压缩包然后解压jdk并压缩至指定安装目录,如果不需要指定安装目录直接写tar -zxvf jdk压缩包名即可tar -zxvf jdk压缩包 -C /这里写指定安装目 ...