C++笔记(持续更新)


一、输入输出流

C++使用iostream库提供的IO机制:输入流、输出流。
一个流就是一个字符序列,从IO设备读出或写入IO设备。
流:随着时间的推移,字符是顺序生成或消耗的。
向流写入数据:
输出运算符 <<
<< 接受两个对象,左侧必须是一个ostream对象,右侧是要打印的值。运算符将给定的值写到给定的outstream对象中,输出运算符的计算结果就是其左侧运算对象,即ostream对象。
std::cout << “hello world!” << endl;
第一个 << 打印右侧双引号中的字符串字面值常量,第二个 << 打印 endl ,endl是特殊值,结束当前行。

从流读取数据:
>> 接受两个对象,左侧是istream对象,右侧是一个给定的对象。从istream读入数据,存入给定的对象。返回其左侧运算对象作为结果。
std::cin >> value;
从std::cin读入数据,并存入value。返回std::cin。


连续输入例子


二、变量和基本类型

1、类型转换

当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。理解取模和求余运算

例如,8比特大小的unsigned char 可以表示0-255区间内的值,如果我们赋一个区间以外的值,实际的结果是该值对256取模后所得的余数。
因此,将-1赋给8比特大小的unsigned char 所得的结果是255。


计算机内存可寻址的最小内存块称为字节(byte)

2、变量

1)初始化

初始化不是赋值,是两个完全不同的操作。
初始化:创建变量时赋予其一个初始值。
赋值:擦除对象当前值,以新值替代。

C++11的标准,初始化变量可以使用花括号。
例如,int a = {0}; 或者 int a {0};
还可以int a(0);

前提:内置类型的变量未被显示初始化
定义于函数体之外的变量被初始化为 0
定义在函数体内部的内置类型变量将不被初始化

类可以自己决定是否不经初始化就定义对象,它将决定对象的初始值到底是什么

2)声明和定义

声明:使名字为程序所知
定义:创建与名字关联的实体

在变量前添加关键字extern,表示只声明它而不定义它。但如果给添加extern的变量赋初值,那么就抵消了extern的作用,就变成定义了。
例如,

extern int i; //声明i 而非定义 i
int j; //声明并定义 j
extern double pi = 3.1415; //定义

变量能且只能被定义一次,但可以被声明多次


3)标识符

C++标识符对大小写字母敏感

用户自定义的标识符中不能连续出现两个下划线,也不能以下划线紧连大写字母开头。定义在函数体外的标识符不能以下划线开头。

4)名字的作用域

嵌套的作用域分为内层和外层(C++ Primer 44 页)

如果定义了与全局变量同名的局部变量,在局部变量的作用域内会优先使用局部变量,此时想要使用全局变量就要使用域操作符来覆盖默认的作用域规则。
所以,如果函数有可能使用到某全局变量,就不宜在定义一个同名的局部变量

3、复合类型

1)引用

C++新增了一种引用,所谓的“右值引用”。主要用于内置类。我们使用术语一般说的是“左值引用”。

初始化变量是初始值拷贝到新建的对象中
定义引用是将引用和它的初始值绑定在一起,不是将初始值拷贝给引用

引用就是别名,只是为一个已经存在的对象起的另外一个名字

引用将和它的初始值对象绑定在一起,因为无法令引用重新绑定到另外一个对象,因此引用必须初始化

引用类型的初始值必须是一个对象,且对象的类型与引用类型一致


三、字符串、向量和数组

3.5、数组

数组和 vector 初始化

c++基础之vector、数组初始化

如果要指定vector中的每个值,可以通过先定义一个数组,把数组首地址和要传的最后一个元素的下一个地址传进去

在这里插入图片描述
a的起始元素开始到第四个元素之前的元素都给了v4

在这里插入图片描述


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值