• C++ Primer Plus第五版笔记(p1-50)


    1 在unix中 echo 获得状态
    2iostream 包含istream以及ostream:随着时间的推移,字符是按照顺序生成或者是消耗的
    3cin标准输入 cout标准输出 Cerr标准错误 clog 一般性信息
    4cin>>c1>>c2;连续输入
    5cout是ostream的对象,第一个<<返回左侧cout,接着到第二个cout
    6endl的效果是结束当前行,并将于设备关联的缓冲区内容刷到设备中
    7std 命名空间
    8注释分为 /* */ 以及//
    9for while 循环
    10读取数量不定的输入数据: while(std::cin>>value) 读取数据直到文件尾部 3 4 5 6 输出18 从键盘输入文件的结束符是crtl+z 然后再enter
    11if 语句
    12=与==的混淆
    13自己程序的风格很重要, 要坚持自己的风格
    14对于包含标准库的文件, 需要使用<>包围文件名
    对于不属于标准库的头文件,则是用双引号””包围
    15return -1表示失败,返回错误值
    16一般多使用double 而不是float
    17自动类型转换 p33
    给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。例如,8比特大小的unsigned char 可以表示0-255区间内的值,但我们付了一个区间以外的值过后,则实际的值是该值对256取模后所得的余数。因此,把-1赋给8比特大小的unsigned char 所得的结果是255

    在这里插入图片描述

    把负数转换成无符号数类似于直接给无符号数赋一个负值,结果等于这个负数加上无符号数的模
    在这里插入图片描述在这里插入图片描述

    给有符号类型一个超出它表示范围的值时,结果是未定义的,此时程序可能会工作,可能崩溃,但是也可能产生垃圾数据

    18 别混用带符号类型以及无符号类型
    19 浮点型字面值表现为一个小数或以科学计数法表示的指数,其中指数部分用E/e标识
    3.14159E0
    默认的,浮点型字面值是一个double, 可以用其余的后缀来表示其他的浮点型 p37

    20 编译器在每个字符串借位添加一个空字符\0, 因此,字符串字面值实际长度要比它的内容多1

    21 转义字符 \n换行符 双引号\” 单引号\’
    在这里插入图片描述

    22 泛化的转义序列 \7,\40,\115 如果斜杠后面八进制数字超过三个,那么只有前3个数 p36
    23 指定字面值的类型:在字面值后加上LL,U,u,L表示不同含义 p37
    24 对象是指一块能存储数据并拥有某种类型的内存空间

    25 绝大多数类都支持无须显式初始化而定义对象
    建议初始化每个内置类型的变量

    26 extern int i;声明而不定义变量i
    27 标识符:字母,数字,下划线;字母或者下划线必须是开头,对大小写字母敏感

    28 c++ 关键字 p43
    不太熟悉的关键字: alignas alignof asm enm inline mutable register reinterpret_cast static_assert static_cast thread_local throw union wchar_t

    29 cout<<::reused< 30 定义引用时,程序会把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用
    31 引用必须初始化
    32 不能定义引用的引用,不能&&a
    33 引用只能绑定在对象上,不能和字面值或者某个表达式的计算结果绑定在一起
    34 指针本身就是一个对象,允许对指针赋值以及拷贝,而且在指针的生命周期中它可以指向几个不同的对象。其二,指针无须在定义时赋初值,没有初始化也将拥有一个不确定的值
    35 指针的类型实际上用于指定它所指向对象的类型,所以两者必须匹配
    36 空指针不指向任何对象,在试图使用一个指针之前可以检查它是否为空 int *p1=nullptr
    用字面值 nullptr 来初始化指针是c++11刚引入的新特性

    37 过去的程序会用到一个名为NULL的预处理变量来给指针赋初值,这个变量在头文件cstdlib中定义,它的值是0
    #include
    int *p3=NULL;
    38 预处理器是运行于编译过程之前的一段程序,预处理变量不属于命名空间std,而是由预处理器负责管理
    39 在新标准下,尽量使用nullptr而不是NULL
    40 建议初始化所有指针,如果实在不知道指向何处,请初始化为nullptr 或者 0
    41 赋值永远改变的是等号左侧的对象
    42 任何非0指针对应的条件值都是true
    43 两个指针存放的地址值相同(两个指针相等)有三种可能:
    都指向同一个对象
    都为空
    都指向另外对象的下一个地址

    44 void可以存放任意对象的地址,不过比较有限,不能直接操作void 指针所指向的对象,因为不确定类型,而且无法访问内存空间所存的对象

  • 相关阅读:
    【JUC源码专题】LinkedBlockingDeque 源码分析(JDK8)
    第5章 链路层--单元测试--计算机网络
    猿创征文|SpringMVC程序开发
    港联证券:2万元股票一进一出手续费?
    封装、继承、多态的概念
    网工内推 | 信息安全主管,CISP认证优先,最高25K,加绩效提成
    java毕业设计项目源代码CRM客户关系管理系统
    瑞吉外卖09-菜品模块的CRUD与启售、停售
    使用Xshell远程连接虚拟机的linux
    【 Vue 】Diff 算法上
  • 原文地址:https://blog.csdn.net/zhangyuanbonj/article/details/128050031