C++Primer学习笔记:第1章 开始

本博客为阅读《C++ Primer》(第5版)的读书笔记

ps:刚开始的时候我将所有的笔记都放在一篇博客中,等看到第六章的时候发现实在是太多了,导致我自己都不想看,为了日后回顾(不那么有心理压力),我将笔记拆分为一章一章的。

  • 在大多数系统中,main的返回值被用来指示状态。返回值0表示成功,非0的返回值的含义由系统定义,通常用来指出错误类型。在Unix中程序运行以后返回值保存在$?中(必须在刚运行后打印输出)
  • 编译时可能需要加上-std=c++11打开对C++11标准的支持,一般会加上-Wall参数,可以对有问题的程序结构发出警告
  • 如果想要通过打印语句进行调试,一定要及时使用endl操纵符刷新流,否则如果程序崩溃,可能无法得到输出信息,从而导致关于程序崩溃位置的错误推断
  • 标准库定义的所有名字都在命名空间std中
  • /**/之间不能包含*/,可以包含/*//
  • 当我们使用一个istream对象作为条件时,其效果是检测流的状态。如果流是有效的(未遇到错误)检测成功,当遇到文件结束符(end-of-file),或遇到一个无效输入时,istream对象的状态会变为无效,返回假
  • Unix系统中,文件结束符为Ctrl+D
  • 按照编译错误报告的顺序来逐个修正错误,因为错误经常有传递效应,后面的错误经常是由前面的错误引起的。在每修改一个(或一小部分)明显的错误后就重新编译
  • cin进行循环读入的格式为while(cin>>x)。但是如果用Ctrl+C中断读入会导致cin失效
  • cinscanf的输入速率进行了测试,一般情况下cinscanf慢许多,在读入规模在1e6规模就会有明显的差距。但是可以用ios::sync_with_stdio(false);加速流,这样会关闭和stdio的同步,在网上查了一下,这就要求我们在混用coutprintf的时候都要及时清空缓冲区(输出endl或者\n),问题不大。在加速流以后,cinscanf的效率差不多,在1e8数量级的时候cin的效率超过了printf(实测)
  • 注意判等运算符为==,为了避免写成=出错,一个良好的编程习惯是常量 == 变量,这样如果我们写错了就会报错
  • 标准头文件一般不加后缀,包含来自标准库的头文件时,应该使用<>包围头文件,对于不属于标准库的头文件,则用""包围
  • 为了使用一个类,我们不必关心它是如何实现的,只需要知道类对象可以执行什么操作
  • 点运算符.的运算结果是右侧运算对象指定的成员,调用运算符()里面放置参数列表。
  • 缓冲区是一个存储区域,用于保存数据。IO设施通常将输入(输出)数据保存在一个缓冲区中,读写缓冲区的动作与程序中的动作是无关的。我们可以显式地刷新缓冲区,以便强制将缓冲区中的数据写入输出设备。默认情况下,读cin会刷新cout,程序非正常终止也会刷新cout
  • 类类型的变量如果未指定初值,则按类定义指定的方式进行初始化。定义在函数内部的内置类型变量默认是不初始化的,除非有显式的初始化语句
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值