美文网首页
《C++ Primer Plus》第5章学习笔记

《C++ Primer Plus》第5章学习笔记

作者: 蓬篙人 | 来源:发表于2021-06-07 02:37 被阅读0次

    内容思维导图

    第5章 循环和关系表达式

    1. for循环

    • 循环的四个部分:
      • 循环的初始化(loop initialization)
      • 循环测试(loop test)
      • 循环体(loop body)
      • 循环更新(loop update)
    • for循环执行重复操作的步骤:
        1. 设置初始值。
        1. 执行测试,看看循环是否应当继续执行。
        1. 执行循环操作。
        1. 更新用于测试的值。
    for (initialization; test_expression; update-expression)
        body
    
    • C++并没有将test-expression的值限制为只能为真或假,可以使用任意表达式,C++将强制把结果转换为bool类型。
    • 当表达式的操作改变了内存中数据的值时,我们说表达式有副作用(side effect)

    2. 关系表达式

    • C++的6种关系操作符:
    操作符 含义
    < 小于
    > 大于
    <= 小于或等于
    >= 大于或等于
    == 等于
    != 不等于
    • 数组名是数组的地址,同样,用引号括起来的字符串常量也是其地址。
    // 其中word为字符数组,下面的语句是判断word数组的地址与字符串常量"mate"的地址是否相同
    word == "mate";
    
    • C-风格字符串是通过结尾的空值字符定义的,不是由其所在数组的长度定义的,这意味着两个字符串即使被存储在长度不同的数组中,也可能是相同的。如下所示:
    char big[80] = "Daffy";
    char little[6] = "Daffy";
    

    3. while循环

    • while循环是没有初始化和更新部分的for循环,它只有测试条件和循环体:
    while (test-condition)
        body
    
    • 逐字符遍历字符串直到遇到空值字符的技术是C++处理字符串的标准方法。

    • 设计循环的几条指导原则:

      • 确定循环终止的条件。
      • 在首次测试之前初始化条件。
      • 在条件被再次测试之前更新条件。
    • C++为类型建立别名的两种方式:

        1. 使用预处理器:#define BYTE char
        1. 使用C++typedef关键字:typedef char byte,即将byte作为char类型的别名,其通用格式是:typedef typeName aliasName

    4. do while循环

    • do while循环句法:
    do
        body
    while (test-expression);
    

    5. 循环和文本输入

    • cin读取char值时,与读取其他基本类型一样,cin将忽略空格和换行符。
    • 发送给cin的输入被缓冲,这意味着只有在用户按下回车键后,输入的内容才会被发送给程序。
    • 很多PC编程环境将ctrl+Z视为模拟的EOF检测文件尾)。
    • cin的一些成员函数
      • cin.get():读取输入中的下一个字符(即使是空格),有多个重载版本。
      • cin.eof():查看eofbit是否被设置1.
      • cin.fail():查看eofbitfailbit是否被设置为1。
    • eof()fail()是事后报告,而不是预先报告,因此应将cin.eof()cin.fail()测试放在读取后。
    char ch;
    cin.get(ch);                  // read a char
    while (cin.fail() == false)   // test for EOF
    {
        // do something
        cin.get(ch);             // read another char
    }
    
    • EOF值必须不同于任何有效的字符值,以便程序不会将EOF与常规字符混淆。通常EOF被定义为值-1。由于EOF表示的不是有效字符编码,因此不能与char类型兼容。如果使用cin.get()并测试EOF,则必须将返回值赋给int变量。

    6. 嵌套循环和二维数组

    • C++没有提供二维数组类型,但用户可以创建每个元素本身是数组的数组。声明示例如下:
    int maxtemps[4][5];
    
    • 二维数组初始化
    // 一维数组初始化
    int buts[5] = { 23, 26, 24, 31, 28 };
    // 二维数组初始化
    int maxtemps[2][5] =
    {
        { 94, 98, 87, 103, 101 },
        { 98, 99, 91, 107, 105 }
    }
    // 字符指针数组初始化
    const char* cities[2] = 
    {
        "Gribble City",
        "New Gribble"
    }
    

    相关文章

      网友评论

          本文标题:《C++ Primer Plus》第5章学习笔记

          本文链接:https://www.haomeiwen.com/subject/nnuheltx.html