zoukankan      html  css  js  c++  java
  • C++ Primer Plus 6th 读书笔记

    1. cin读取错误时对换行符的处理

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 int main() {
     6     double d;
     7     char c;
     8     cin >> d;
     9     if(!cin) {
    10         cout << "x" << endl;
    11         cin.clear();
    12         cout << cin.get() << endl;
    13     }
    14     // cin.get();
    15     cin.get(c);
    16 }

    以上代码输入分为2种情况:

    若输入为double类型,则cin.get(c)会读取换行符,程序运行结束。

    若输入为非double类型,如char类型,则cin会置错误位,保留错误输入的同时丢弃回车符(现象如此,原因猜测),所以程序在运行到cin.get(c)时候会停止等待输入。

    奇怪,又测试了几次,感觉和之前一样,程序运行结束。

    2. const指针分析

    在二级间接关系时,将const指针和非const指针混合的指针赋值方式将不再安全。

    1 const int **pp2;
    2 int *p1;
    3 const int n = 13;
    4 pp2 = &p1; // not allowed
    5 *pp2 = &n; // valid
    6 *p1 = 10; // valid

    pp2是一个指针,他指向另一个指针的地址,而另一个指针是指向一个int变量的地址。

    pp2指针本身非const,所以可以指向一个指针地址,即&p1。但在实际编程中,语句4语法检查错误,原因是p1指向的是非const的int,而要求是const int。

    假如语句4运行成功,则*pp2为指向一个const int的指针,赋值成功,即 p1 = &n,但实际情况下非const指针不能指向const变量,故运行*p1 = 10时与原先造成冲突。

     

  • 相关阅读:
    第二篇第十一章灭火救援设施
    第二篇第六章安全疏散
    第二篇第五章防火防烟分区于分隔
    第二篇第三章建筑分类与耐火等级
    applicationContext-solr.xml
    solrj 操作 solr 集群版
    centos solr 集群搭建
    org.apache.ibatis.binding.BindingException
    全文检索基础
    solrj 操作 solr 单机版
  • 原文地址:https://www.cnblogs.com/Azurewing/p/4280602.html
Copyright © 2011-2022 走看看