基本数据类型

类型 关键字 描述 所占字节数 最大值 最小值
布尔型 bool 存储值 true 或 false bool 1 0
字符型 char 通常是一个八位字节(一个字符)。这是一个整数类型 1
整型 int 对机器而言,整数的最自然的大小 4 2147483647 -2147483648
浮点型 float 单精度浮点值。单精度是这样的格式,1 位符号,8 位指数,23 位小数。 4 3.40282e+38 1.17549e-38
双浮点型 double 双精度浮点值。双精度是 1 位符号,11 位指数,52 位小数。 8 1.79769e+308 2.22507e-308
无类型 void 表示类型的缺失。
宽字符型 wchar_t wchar_t 宽字符类型。2 或 4 2147483647 -2147483648

修饰符

C++ 允许在 char、int 和 double 数据类型前放置修饰符,可以使用一个或多个类型修饰符进行修饰

修饰符 可修饰
signed 整型、字符型
unsigned 字符型
short 整型
long 双精度型

可以使用速记符号来声明无符号短整数或无符号长整数。可以不写 int,只写单词 unsigned、short 或 unsigned、long,int 是隐含的。例如,下面的两个语句都声明了无符号整型变量。

unsigned x;
unsigned int y;

定义常量

  • 使用 #define 预处理器。
  • 使用 const 关键字。
#define A 1;
//or
const int B = 2;

//也可以修饰指针
const int *p = &B;
//===
int const *p = &B;

//或者直接修饰p
int *const p = &B;

⚠️ 最好把常量定义为大写字母形式,

C++ 存储类

存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。

  • auto
  • register
  • static
  • extern
  • mutable
  • thread_local (C++11)

⚠️ 从 C++ 11 开始,auto 关键字不再是 C++ 存储类说明符,且 register 关键字被弃用。

auto

auto 用于声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符

register

register 用于定义存储在寄存器中而不是 RAM 中的局部变量

定义 'register' 并不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。

static

static 保持局部变量的存在,不需要在每次它进入和离开作用域时进行创建和销毁,static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内

extern

extern 用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的,对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。

这里有个疑问,全局变量的值在程序的整个生命周期内都是有效的,这个是指只能在生命它的文件内还是对所有文件起效? 那么 extern 和 static 修饰全局变量的功能不是有一个多余的吗?

thread_local

使用 thread_local 声明的变量仅可在它在其上创建的线程上访问。 变量在创建线程时创建,并在销毁线程时销毁。 每个线程都有其自己的变量副本。
thread_local 说明符可以与 static 或 extern 合并。
可以将 thread_local 仅应用于数据声明和定义,thread_local 不能用于函数声明或定义。

c++学习(一)的更多相关文章

  1. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  2. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  3. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  4. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  5. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  6. Unity3d学习 制作地形

    这周学习了如何在unity中制作地形,就是在一个Terrain的对象上盖几座小山,在山底种几棵树,那就讲一下如何完成上述内容. 1.在新键得项目的游戏的Hierarchy目录中新键一个Terrain对 ...

  7. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  8. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  9. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  10. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

随机推荐

  1. Murano Deployment

    2015-09-14 05:53:02 — Action deploy is scheduled 2015-09-14 05:53:03 — Unable to load due to 'could ...

  2. Trace Logging Level

    Trace In functions which support this level, details every parameter and operation to help diagnose ...

  3. spring DelegatingFilterProxy管理过滤器

    安全过滤器链 Spring Security的web架构是完全基于标准的servlet过滤器的.它没有在内部使用servlet或任何其他基于servlet的框架(比如spring mvc),所以它没有 ...

  4. python3.4中自定义wsgi函数,make_server函数报错问题

    别的不多说,先上代码 #coding:utf-8 from wsgiref.simple_server import make_server def RunServer(environ, start_ ...

  5. Log4.Net日志记录解析

    http://www.cnblogs.com/neekerss/archive/2011/01/04/1925171.html

  6. Git GUI基本操作

    一.Git GUI基本操作 1.版本库初始化 gitpractise文件夹就变成了Git可以管理的仓库,目录下多了一个.git文件夹,此目录是Git用于管理版本库的,不要擅自改动里面的文件,这样会破坏 ...

  7. 链表例题2:链表的倒数第k个节点是多少

    解题思想: 1.创建一个结点类(为后面实现链表做基础) 2.创建一个查询倒数元素的方法 3.使用快慢指针的思想(主要的部分) 图中的表示的是查询倒数第k个结点的操作: 创建一个快慢指针后pre(慢指针 ...

  8. 《Head First 设计模式》之代理模式

    代理模式(Proxy):控制对象访问 ——为另一个对象提供一个替身或占位符来访问这个对象. 要点: 代理模式有许多变体,如:缓存代理.同步代理.防火墙代理和写入时复制代理 代理在结构上类似装饰者,但目 ...

  9. css随堂笔记(二)

    css   sub注释 注释不能嵌套 sub生成结构代码快捷 复合选择器 1.后代选择器 语法:选择器1 选择器2 选择器3  { 属性名:属性值 } 2.子代选择器 子代选择器语法: 选择器1> ...

  10. DOMNodeInserted,DOMNodeRemoved 和监听内容变化插件

    元素的增加 删除 及事件监听 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...