[C++]编程基础, 定义/初始化对象, Array/Vector, 指针, 文件读写

本文作为浅显入门文章, 旨在帮助迅速熟悉C++编程基础, 无论是复习还是首次接触, 熟悉以下内容能迅速帮助写出简单的C++代码 主要参考了大神Stanley Lippman 的 Essential C++

  • 对象的定义与初始化
  • 表达式, 条件语句, 循环语句 (略)
  • Array 和 Vector
  • 指针
  • 文件的读写

对象的定义与初始化

  1. 每个对象都属于某个特定的数据类型, 数据类型决定了对象能持有的数值范围, 也决定了对象应该占用多少内存空间.
  2. Class 就是程序员自行定义的数据类型.
  3. 初始化:
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);

表达式, 条件语句, 循环语句

  1. 算术运算符, 加减乘除, 取余
  2. expr ? a:b; expr为true就执行a, 否则执行b
  3. 复合运算符, ++, --, +=.
  4. 关系运算符, ==, <=…
  5. 逻辑运算符, ||, &&, |, &, (&& 与&的区别参考: https://blog.csdn.net/qq_31858735/article/details/82839060 )
  6. 优先级(略)
  7. if, while语句(略)

Array, Vector

C++中遇到数组问题时优先考虑使用Vector, 但也需要了解array的用法, 因为现存的大多代码也都有使用array.
新建数组时, 使用可存放连续证书的容器(container)类型, 这种类型允许我们:

  1. 以名称取用容器中的元素
  2. 以容易中的位置取用元素
定义array

要定义array需要:

  1. 指定arrary的元素类型
  2. 给array取个名字.
  3. 指定其大小
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
  1. 包含头文件 vector
  2. 指定元素类型
  3. 给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

文件读写

待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值