1 在unix中 echo 获得状态
2iostream 包含istream以及ostream:随着时间的推移,字符是按照顺序生成或者是消耗的
3cin标准输入 cout标准输出 Cerr标准错误 clog 一般性信息
4cin>>c1>>c2;连续输入
5cout是ostream的对象&#xff0c;第一个<<返回左侧cout,接着到第二个cout
6endl的效果是结束当前行&#xff0c;并将于设备关联的缓冲区内容刷到设备中
7std 命名空间
8注释分为 /* */ 以及//
9for while 循环
10读取数量不定的输入数据&#xff1a; while(std::cin>>value) 读取数据直到文件尾部 3 4 5 6 输出18 从键盘输入文件的结束符是crtl&#43;z 然后再enter
11if 语句
12&#61;与&#61;&#61;的混淆
13自己程序的风格很重要&#xff0c; 要坚持自己的风格
14对于包含标准库的文件&#xff0c; 需要使用<>包围文件名
对于不属于标准库的头文件&#xff0c;则是用双引号””包围
15return -1表示失败&#xff0c;返回错误值
16一般多使用double 而不是float
17自动类型转换 p33
给无符号类型一个超出它表示范围的值时&#xff0c;结果是初始值对无符号类型表示数值总数取模后的余数。例如&#xff0c;8比特大小的unsigned char 可以表示0-255区间内的值&#xff0c;但我们付了一个区间以外的值过后&#xff0c;则实际的值是该值对256取模后所得的余数。因此&#xff0c;把-1赋给8比特大小的unsigned char 所得的结果是255
把负数转换成无符号数类似于直接给无符号数赋一个负值&#xff0c;结果等于这个负数加上无符号数的模
给有符号类型一个超出它表示范围的值时&#xff0c;结果是未定义的&#xff0c;此时程序可能会工作&#xff0c;可能崩溃&#xff0c;但是也可能产生垃圾数据
18 别混用带符号类型以及无符号类型
19 浮点型字面值表现为一个小数或以科学计数法表示的指数&#xff0c;其中指数部分用E/e标识
3.14159E0
默认的&#xff0c;浮点型字面值是一个double&#xff0c; 可以用其余的后缀来表示其他的浮点型 p37
20 编译器在每个字符串借位添加一个空字符\0, 因此&#xff0c;字符串字面值实际长度要比它的内容多1
21 转义字符 \n换行符 双引号\” 单引号\’
22 泛化的转义序列 \7,\40,\115 如果斜杠后面八进制数字超过三个&#xff0c;那么只有前3个数 p36
23 指定字面值的类型&#xff1a;在字面值后加上LL&#xff0c;U,u,L表示不同含义 p37
24 对象是指一块能存储数据并拥有某种类型的内存空间
25 绝大多数类都支持无须显式初始化而定义对象
建议初始化每个内置类型的变量
26 extern int i;声明而不定义变量i
27 标识符&#xff1a;字母&#xff0c;数字&#xff0c;下划线&#xff1b;字母或者下划线必须是开头&#xff0c;对大小写字母敏感
28 c&#43;&#43; 关键字 p43
不太熟悉的关键字&#xff1a; alignas alignof asm enm inline mutable register reinterpret_cast static_assert static_cast thread_local throw union wchar_t
29 cout<<::reused< 30 定义引用时&#xff0c;程序会把引用和它的初始值绑定在一起&#xff0c;而不是将初始值拷贝给引用
31 引用必须初始化
32 不能定义引用的引用&#xff0c;不能&&a
33 引用只能绑定在对象上&#xff0c;不能和字面值或者某个表达式的计算结果绑定在一起
34 指针本身就是一个对象&#xff0c;允许对指针赋值以及拷贝&#xff0c;而且在指针的生命周期中它可以指向几个不同的对象。其二&#xff0c;指针无须在定义时赋初值&#xff0c;没有初始化也将拥有一个不确定的值
35 指针的类型实际上用于指定它所指向对象的类型&#xff0c;所以两者必须匹配
36 空指针不指向任何对象&#xff0c;在试图使用一个指针之前可以检查它是否为空 int *p1&#61;nullptr
用字面值 nullptr 来初始化指针是c&#43;&#43;11刚引入的新特性
37 过去的程序会用到一个名为NULL的预处理变量来给指针赋初值&#xff0c;这个变量在头文件cstdlib中定义&#xff0c;它的值是0
#include
int *p3&#61;NULL;
38 预处理器是运行于编译过程之前的一段程序&#xff0c;预处理变量不属于命名空间std&#xff0c;而是由预处理器负责管理
39 在新标准下&#xff0c;尽量使用nullptr而不是NULL
40 建议初始化所有指针&#xff0c;如果实在不知道指向何处&#xff0c;请初始化为nullptr 或者 0
41 赋值永远改变的是等号左侧的对象
42 任何非0指针对应的条件值都是true
43 两个指针存放的地址值相同&#xff08;两个指针相等&#xff09;有三种可能&#xff1a;
都指向同一个对象
都为空
都指向另外对象的下一个地址
44 void可以存放任意对象的地址&#xff0c;不过比较有限&#xff0c;不能直接操作void 指针所指向的对象&#xff0c;因为不确定类型&#xff0c;而且无法访问内存空间所存的对象