导图 - 第2章 变量和基本类型
感觉还是有很多地方不懂 T-T
2.1 基本内置类型
C++:静态数据类型语言,即程序运行前(编译时)需要进行类型检查
Python:动态数据类型语言,程序运行时才进行类型检查
C++的基本内置类型有:算术类型 和 空类型void
2.1.1 算术类型
字节 byte、字 word
字节 是可寻址的最小内存块
字 是存储的基本单元,通常由几个字节组成
无符号类型、带符号类型
2.1.2 类型转换
切勿混用带符号类型和无符号类型
可能会出现无法预知的行为
2.1.3 字面值常量
字面值常量的形式和值决定了他的数据类型
可能会在赋初值或输出时用到
2.2 变量
2.2.1 变量定义
可以把对象理解成,具有某种数据类型的内存空间
初始化
C++ 初始化 参考博客:
默认初始化
写程序不怕报错,而是怕不报错,结果又不对,就很难找到问题所在
2.2.2 变量声明与定义的关系
声明比较含糊:有一个人叫张三,因为他是一个人,也知道他能进行哪些操作
定义则很明确:有一个人叫张三,并且他的其他信息也很明确,比如身高、体重,同时也知其操作
2.2.3 标识符
标识符就是我们给变量、对象起的名称
2.2.4 名字的作用域
输出#3:使用作用域操作符::
来覆盖默认的作用域规则,因为全局作用域本身没有名字,所以当作用域操作符左侧为空时,即向全局作用域请求获取作用域操作符右侧名字对应的变量
作用域操作符,参考博客:
如果像上图一样写程序,则可读性差,还容易出错,而且不好找到错误位置
2.3 复合类型
一条声明语句由 一个基本数据类型 和 紧随其后的一个声明符列表 组成
声明符,命名了一个变量,并指定该变量为与基本数据类型有关的某种类型
即int a
中的a
就是声明符,其类型为int
型;而复合类型中,int &a
中的&a
是声明符,其类型为复合类型,int
型变量的引用
参考博客:毛裤先生_2 - C/C++语言中的声明
2.3.1 引用
起别名
2.3.2 指针
取地址符 和 解引用符
这里我画了个图帮助自己理解
参考博客:小堂同学 - C++基础:引用与指针
空指针
当心空指针异常哦~
void * 指针
2.3.3 理解复合类型的声明
原则:从右往左读
指向指针的指针
指针的引用
2.4 const 限定符
2.4.1 const 的引用
即对常量的引用
2.4.2 指针和 const
指向常量的指针
const 指针(即常量指针)
2.4.3 顶层 const
2.4.4 constexpr 和常量表达式
常量表达式
constexpr 变量(没懂)
参考视频1:锦鲤的如意喵 - 3分钟掌握C++ constexpr vs const
参考视频2:C++11新特性constexpr和const
参考博客1:Gamer_code - constexpr
参考博客2:暗夜无风 - C++知识整理系列(三)—— constexpr常量表达式
参考博客3:C咖咖 - C++之constexpr详解
constexpr只对顶层const有效
constexpr指针不能指向函数体内的变量,因为这样的变量存放在栈区,而非静态数据存放区
2.5 处理类型
2.5.1 类型别名
注意复合类型的别名的理解方式
参考博客:
2.5.2 auto 类型说明符
编译器会根据 auto 变量的初始化来推断类型,因此用auto声明的变量必须有初始值
参考博客:
2.5.3 decltype 类型指示符
2.6 自定义数据类型
数据类型:一组数据以及相关操作的集合
2.6.1 定义 Sales_data 类型
2.6.2 使用 Sales_data 类
自己走一遍