《程序设计基础》
烂
1.1.2 程序流程图
1.2.2 程序设计方法
结构化程序设计(Structured Programming, SP):面向过程
面向对象程序设计(Object Oriented Programming, OOP)
1.4.2 C++ 源程序的组成
编译预处理命令:文件包含,宏定义,条件编译
可以在函数内部 using namespace
1.4.3 C++ 源程序的组成元素
标识符的首字符必须是字母或下划线
2.1.1 数制
十进制 decimal
二进制 binary
八进制 octal(后缀为 Q。为了防止 O
与 \(0\) 混淆)
十六进制 hexadecimal
2.1.2 不同数制之间的转换
小数部分:乘基取整法:不断将小数部分 \(\times2\)(舍去整数部分),将每次得到整数部分(\(0\) 或 \(1\))从左到右排列
容易根据 \(2^{-i}\times2^{i}=1\) 验证正确性
注:不是所有的十进制小数都能用二进制小数精确表示
2.2.2 整数的表示方法
以二进制表示整数
无符号整数:编码与数值相同
原码:最高位表示符号(正数为 \(0\)),其余位存储绝对值
补码:正数的补码为原码,负数的补码为绝对值的原码按位取反再 \(+1\)
补码便于加减的本质是模 \(2\) 的次幂
2.3 实数在计算机中的表示
近似成有限小数(二进制)表示实数
浮点数 \(sM\times2^{E}\):\(s\in\{0,1\}\) 为数值的符号,\(M\in\mathbb{N}\) 为数值的精度,称为位数,指数 \(E\in\mathbb{Z}\) 称为阶码
IEEE754 国际标准:\(M\) 采用原码表示,最高非零位为 \(2^{0}\),存储时只存储小数点后的部分 \(M'\);\(E\) 采用移码表示(在真值上加一个偏置值)
对于 \(64\) 位浮点数 double
:\(s\) 占 \(1\) 位(正数为 \(0\)),\(M'\) 占 \(52\) 位,\(E_{\text{移}}\) 占 \(11\) 位(偏置值 \(2^{10}-1\))。最值:\(\pm1.7\times10^{208}\)(\(15\) 位有效数字)
【例 2-18】
\((-2.75)_{10}=(-10.11)_{2}=(-1.011\times2^{1})_{2}\)
\(s=1\)
\(M=1.011\),\(M'\) 为 \(0110\cdots0\)
\(E_{\text{真}}=1,E_{\text{移}}=1024\),存储为 \(10000000000\)
2.5 C++ 中的基本数据类型和转义字符
2.6.1 常量
注:为了识别字符串的结束位置,C++ 会在末尾自动添加 '\0'
(ASCII 为 \(0\)),所以存储长度总是比实际长度多 \(1\)
2.8.3 复合语句和空语句
复合语句:用 {}
括起来,语法上是一条语句(注:复合语句中声明的变量仅在该复合语句内可用)
空语句:仅由 ;
构成
2.9.1 ++ 和 --
a+++b
编译器会解释为 (a++)+b
2.10.1 运算符的优先级和结合性
右结合性:按从右到左的顺序进行运算(只有单目运算符、条件运算符和赋值运算符)
2.10.3 表达式的求值顺序
&&
||
? :
,
的求值顺序是从左到右,其余没有规定
I/O 流的常用控制符和 ASCII 编码表
4.2.2 C++ 提供的一维数组或二维数组存储二维数据
2. 二维数组的初始化
int Dir[][2] = {{0,1},{1,0},{0,-1},{-1,0}}
3.4.2 用 C++ 提供的 switch 语句变成解决多路选择问题
case
后的常量表达式只能是整形、字符型或枚举型
4.7 C++ 中的枚举数据类型
p90
5.6 多文件结构
p105
5.7 变量和函数的作用域与生存期
p109
6.1 数据存储的基本原理
内存空间分为四个区域:
- 代码区
- 全局数据区
- 堆区:存放动态数据
- 栈区:存放局部数据
6.2 地址与 C++ 中的指针
数组名是一个指针常量
6.2.2 指针变量的初始化
在 \(64\) 位系统中,内存地址以 \(64\) 位二进制数表示,所以指针变量无论是什么类型,总是占用 \(8\) 个字节
6.3.4 指向行的指针变量
int a[N][2];
int (*p)[2];
p = a+i; // p 指向第 i 行
a[i][j]
也可写作 *(a[i]+j)
或 *(*(a+i)+j)
6.5 动态使用内存空间
int a = new int[N](0);
delete []a;
6.6 二级指针
p133
6.7 指针与函数
6. 实参是函数的首地址
p140