本文作为浅显入门文章, 旨在帮助迅速熟悉C++编程基础, 无论是复习还是首次接触, 熟悉以下内容能迅速帮助写出简单的C++代码 主要参考了大神Stanley Lippman 的 Essential C++
- 对象的定义与初始化
- 表达式, 条件语句, 循环语句 (略)
- Array 和 Vector
- 指针
- 文件的读写
对象的定义与初始化
- 每个对象都属于某个特定的数据类型, 数据类型决定了对象能持有的数值范围, 也决定了对象应该占用多少内存空间.
- Class 就是程序员自行定义的数据类型.
- 初始化:
int num_tries = 0;
int num_right = 0;
// 或逗号分隔定义多个同类型对象
int num_tries = 0, num_right = 0;
// 也可用 构造函数语法
int num_tries(0);
为什么一个初始化还要分两种写法呢? 原因如下:
用 = 进行初始化其实是沿袭自C语言, 因为对象属于内置类型 (boolean, integer, floating point, character), 或者对象可以单一值初始化, 这样操作就没问题.
但是如果对象需要多个初值, 就不能用简单的 = 了. 所以引入了用来处理"多值初始化"的构造函数初始化语法(constructor initialization syntax)
#include <complex>
complex<double> purei(0,7);
表达式, 条件语句, 循环语句
- 算术运算符, 加减乘除, 取余
- expr ? a:b; expr为true就执行a, 否则执行b
- 复合运算符, ++, --, +=.
- 关系运算符, ==, <=…
- 逻辑运算符, ||, &&, |, &, (&& 与&的区别参考: https://blog.csdn.net/qq_31858735/article/details/82839060 )
- 优先级(略)
- if, while语句(略)
Array, Vector
C++中遇到数组问题时优先考虑使用Vector, 但也需要了解array的用法, 因为现存的大多代码也都有使用array.
新建数组时, 使用可存放连续证书的容器(container)类型, 这种类型允许我们:
- 以名称取用容器中的元素
- 以容易中的位置取用元素
定义array
要定义array需要:
- 指定arrary的元素类型
- 给array取个名字.
- 指定其大小
const int seq_size = 18;
int pell_seq[ seq_size ];
//初始化
int elem_seq[ seq_size ] = {
//这里也可不写seq_size, 让编译器推算
1, 2, 3,
3, 4, 7,
2, 5, 12,
3, 6, 10,
4, 9, 16,
5, 12, 22
};
定义Vector
- 包含头文件 vector
- 指定元素类型
- 给vector取个名字
#include
vector<int> pell_seq( seq_size )
//seq_size 可以不是const
//初始化, vector不支持array那样的初始化, 冗长写法:
vector<int> elem_seq( seq_size );
elem_seq[0] = 1;
elem_seq[1] = 2;
//...
elem_seq[17] = 22;
//或者利用一个已初始化的array:
int elem_vals[ seq_size ] = {
1,2,3, 3,4,7,,2,5,12,3,6,10,4,9,16,5,12,22
};
vector<int> elem_seq( elem_vals, elem_vals + seq_size);
//括号里的值是迭代器的范围
更多的vector初始化可以参考C++ primer, 或是这个笔记 (https://blog.csdn.net/veghlreywg/article/details/80400382 )
指针
int *pi //pi是个int类型对象的指针
int *pi = &ival //把ival所在的内存地址赋值给pi
//初始化指针
int *pi = 0; //未指向任何地址的指针, 其地址值为0, 有时称为null指针
//一组指向vector<int>的指针
vector<int> *seq_addrs[6] = {
&fibonacci, &lucas, &pell,
&triangular, &square, &pentagonal
};
//这里的seq_addrs是个array, 元素类型为vector<int> *
//seq_addrs[0] 是fibonacci vector的地址.
这里需要注意的是 int * 是个定义指针的关键字.
而 pi 是对pi指针的提领(dereference), 所以用pi时, 这是个数值, int *pi时, 后面要赋地址.
成员选择运算符
vector<int> *pv = &fibonacci;
fibonacci.empty()
pv->empty() //pv是个指针, 需要用arrow
文件读写
待续