c++ primer 第二章要点

c++ primer 第二章要点

2.1 基本内置类型

2.1.1 算数类型

  1. c++定义了包含算数类型空类型的基本数据类型
  2. 算数类型包含:1.字符;2.整形数;3.布尔值;4.浮点数
  3. 空类型在函数不返回任何值时使用空类型作为返回类型
  4. 算数类型尺寸在这里插入图片描述
  5. char的大小和一个机器字节一样,一个字节8比特
  6. 使用int执行整数运算,超过int范围使用long long
  7. 执行浮点数选用double,float单精度精度不够

2.1.2 类型转换

  1. 带符号数在表达式中同时出现无符号数时会自动的转化为无符号数,影响结果正确性
  2. double pi = 3, pi = 3.0

2.1.3 字面值常量

  1. 整形和浮点型字面值,字符和字符串字面值
    单括号char型,双括号string型
    编译器在每个字符串的结尾处加一个空字符‘\0’,所以字符串的实际长度比字面值多1
  2. 通过添加前缀或后缀可以改变字面值类型
    在这里插入图片描述
  3. 布尔值字面值(true,false)和指针字面值(nullptr)

2.2 变量

2.2.1 变量定义

  1. int sum = 0, value, units_sold = 0
  2. 定义于函数体内部的变量将不被初始化

2.2.2 变量声明和定义的关系

  1. 声明规定了变量的类型和名字,定义申请了存储空间。
  2. 如果想要声明变量,需要在变量名前加extern并且不进行初始化
  3. 如果想在多个文件中使用同一个变量,需要将声明和定义分离

2.2.3变量命名规范

  1. 变量名一般是小写字母
  2. 自定义的类名一般以大写字母开头

2.2.4 名字的作用域

  1. c++中大多作用域以花括号分割
  2. 名字的有效区域始于名字的声明语句,以声明语句所在的作用域末端作为结束
  3. main函数内的名字拥有全局作用域
  4. 作用域有内层作用域和外层作用域,可以在内层作用域重新定义外层有的名字

2.3 复合类型

2.3.1 引用

  1. 引用是为对象起的另外一个名字;int &refval = ival
  2. 通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名
  3. 引用只能绑定在对象上,不能与字面值或者某个表达式的计算结果绑定

2.3.2 指针

  1. 指针与引用的不同:(1)指针本身是一个对象,允许对指针的赋值和拷贝,而且指针可以先后指向几个不同的对象。(2)引用本身并非一个对象,一旦定义了引用就无法绑定到另外的对象上。(3)指针无需在定义时赋初值,引用需要初始化。式

  2. 指针存放某个对象的地址:int *p = &ival,&是取地址符

  3. 声明语句中,指针的类型是用于被他指定的对象的类型,二者必须匹配

  4. 指针值:1.指向对象 2.指向紧邻对象所占空间的下一位置 3.空指针 4.无效指针

  5. 利用指针访问对象需要使用*

  6. *pi指对象 pi指地址

  7. 空指针的三种声明方式:1. int *pi = nullptr / 0 / NULL

  8. int *p 中空格放在星号的前后都可以,使用方式相同,只是强调的含义不同,星号紧贴变量名表示强调变量具有复合类型,有空格强调声明了复合类型

  9. 指向指针的指针
    在这里插入图片描述

  10. 引用本身不是对象,但指针是对象,因此存在对指针的引用

2.4 const限制符

  1. 定义值不被改变的变量,使用const
  2. 如果程序包含多个文件,想在多个文件之间共享const对象,需要在前面添加extern关键字
  3. 允许将const int &绑定在int上,常量的引用无法修改绑定对象的值

2.5 处理类型

2.5.1 类型别名

  1. 两种方法定义类型别名,(1)typedef double wages;wages和double是同义词。(2)using SI = Sales_item Sales_item和SI是同义词

2.5.2 auto类型说明符

  1. auto类型可以让编译器分析所属类型
  2. 非常量的(const)引用不能绑定字面值:auto &h = 24 ❌

2.5.3 decltype 类型指示符

  1. decltype返回变量或表达式对应类型
  2. 如果decltype使用不加括号的变量,就是该变量的类型,如果使用加括号的变量,结果将得到引用,而引用必须初始化。

2.6 自定义数据结构

2.6.1 定义Sales_data类

  1. 以关键字struct开始,紧接着类名和类体{},类体右侧表示结束的}后必须跟着分号,因为类体后面可以紧跟着变量名表示对该类型对象的定义
  2. 类体定义类的成员,数据成员定义的方式和定义普通变量一样,可以为数据成员定义类内初始值
  3. 还可以用另一个人关键字class定义自己的数据结构

2.6.2 使用Sales_data类

2.6.3 编写自己的头文件

  1. 类一般不定义在函数体内,定义在头文件内,且类所在头文件的名字与类名相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值