1. 序
(1)程序设计分两种:
1. 结构化设计(面向过程)-- 分解算法为模块, 将算法的步骤分解为模块.
2. 面向对象程序设计 -- 主要是 "类" 与 "对象".
(2)进制的转换
1. 二进制转十进制
整数部分与小数部分分开计算, 整数部分 "除 2 取余" 倒排序; 小数部分 "乘 2 取整" 正排序, 出现循环的进行截断, 取循环部分.
2. 二进制转八进制和十六进制
三位二进制转成一位十进制数为一位八进制, 四位二进制转一位十六进制.
2. 变量与常量
关键字: int,float,unsigned,double 等
标识符: abc,Abc,_bc,abc123 等
标识符命名原则:
(1)由数字, 字母和下划线组成
(2)不能以数字开头, 区分大小写
(3)标识符要有意义
2.1 变量定义
数据类型 变量名 1, 变量名 2,..., 变量名 n;
变量的写入: 输入
- cin>>ctemp; // 输入
- ctemp = 36; // 赋值
- int x = 10,y; // 初始化
变量的读出:
- ftemp = ctemp * 1.8 + 32; // 自动读取
- cout<<ftemp; // 输出
2.2 常量
字面常量: 实数, 负数, 整数, 一般默认为十进制数, 后缀形式有长整形 L, 无符号 u, 浮点型 f 等
符号常量:
#define PI 3.14
字符串常量: 双引号括起来, 如 "CHINA"
2.3 常变量
const 数据类型 变量名 = 初始值;
const int x=10;
不能修改, 不能赋值, 只能读取.
3. 算术运算
3.1 算术运算符:
加(+), 减(-), 乘(*), 除(/)
数据类型转换:
(1)强制转换
- short(32) // 转成短整型
- float(32) // 结果: 1.8 单精度, 4 字节
- double(1.8) // 双精度, 8 字节
- short(932769) // 结果:-32767(溢出)
- int(1.8) // 结果: 1 丢失小数位
(2)自动转换
char short int long float double
低 高
- 5 / 2 = 2
- 5.0 / 2 = 2.5
取余:% 10 % 6 = 4
自增 / 减:++,--
x++: 先 x, 后 + 1
++x: 先 + 1, 后运算, 例
- int x = 10, y;
- y = (x++) * 2; // 结果为 20
- y = (++x) * 2; // 结果为 22
3.2 位运算
位反运算符:~ 按位取反, 0 转 1,1 转 0
位与运算符:& s & 0x2 结果为 0000 0010 时倒数第二位是 1, 结果为 0000 0000 时倒数第二位是 0, 用于检测倒数第二位的状态, 0x2 位掩码
位或运算符:| 一真即为真
位异或运算:^ 非
左移运算符:<<s<<2 左移两位, 高 2 位移除, 低 2 位补 0
右移运算符:>> 低位移除, 高位补符号位
3.3 赋值运算
a = 10;b =10;c = 10; 等价于 a = b = c = 10;
y = x; x = x + 1; 等价于 y = x++;
x = x + 1; y = x; 等价于 y = ++x;
复合赋值运算符:
+= -= *= /= %= |= ^= <<=>>=
x += 5; 等价于 x = x+5;
4 数据的输入与输出
C++ 中为输入 / 输出流, 键盘(cin), 显示器(cout),C++ 要输入输出需要导入外部程序
- #include <iostream>
- using namespace std;
cin 输入流, 标准输入, 可同时输入多个数据, 用空格或 Tab 键隔开, cin>>x>>y;
cout 输出流, 称为标准输出,
- int x=5;
- cout<<x; //5
- cout<<x<<x * x; //525, 中间无间隔
5 访问变量内存单元
直接访问: 变量名
间接访问: 引用和指针
引用:
引用类型 & 引用变量名 = 被引用变量名;
int x; int & xa = x;
或
- int x; & xa = x;
- int x,y, & xa = x;
例 int x = 10,y = 20;
int & xa = x;
指针: 内存地址 取地址运算符:& 取变量内存地址的首地址.
& 变量名
- int x = 10;
- cout <<&x; // 输出变量 x 的地址, 一个 8 位的十六进制数, 4 个字节
通过地址访问某个变量 x, 分 3 步:
(1)定义一个专门保存地址的变量 (假设为 P) 称指针变量
(2)取出变量 x 的地址, 赋给 p
(3)通过指针变量 p 所保存的地址访问变量 x 的内存单元
注: 指针的指向类型不能改变, 整型 (int) 指针只能指向整型, 指针变量也是一个变量, 也有其内存单元.
定义指针变量
指向类型 * 指针变量名;
- int x, y;
- int *p; // 定义指针变量 p, 未指向任何变量
- p = &x; // 取 x 的地址赋给指针变量 p, 则 p 指向 x
- int *p = &x;
指针运算符:*
* 指针变量名
- *p
- int x;
- int *p = &x;
- *p = 10;
- cout<<*p; // 结果: 10
- cout<<p; // 显示 p 中保存的地址即 8 位十六进制数
注:*p 相当于 x 的另一个名字或标签
void 类型
- int x = 10;
- double y = 10.5;
- void *p;
- cout<<*((int*)p); // 显示: 10, 需要强制转换为 int
- p = &y;
- cout<<*((double*)p; // 显示: 10.5, 转为 double
指向常变量的指针
- const int x = 10;
- const int * p;
- p = &x;
- cout<< *p; // 正确
- *p = 15 // 错误
定义指针类型的常变量
- int x =10, y = 20;
- int *const p = &x; // 初始化, 以后不能修改
来源: http://www.bubuko.com/infodetail-3383951.html