zoukankan      html  css  js  c++  java
  • C++ Primer 笔记——变量

    1. 初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来代替。

    2.使用列表初始化内置类型的变量时,如果初始值存在丢失信息的风险,则编译器将报错。

    int i{0.1};    // 错误


    3.如果想声明一个变量而非定义它,就在变量名前添加关键字extern,而且不要显示的初始化它,任何包含了显示初始化的声明即成为定义。

    extern int i;    // 声明i而非定义i
    int j;            // 声明并定义j  
    extern double pi = 3.14;    //定义,如果在函数体内试图初始化一个extern变量将报错


    4.引用并非对象,相反的,它只是为一个已经存在的对象起的另外一个名字。

    5.一旦引用的初始化完成,引用将和它的对象一直绑定在一起,所以引用在定义时必须初始化。

    6.在支持C++ 11的情况下空指针最好使用nullptr,而尽量避免使用NULL。至于原因可以看如下链接:

    http://www.cnblogs.com/zoneofmine/p/7224947.html

    7.void* 是一种特殊的指针类型,可用于存放任意对象的地址,但是我们不知道这个地址中到底是个什么类型的对象,所以也无法对这个对象做操作。

    8.在定义多个变量的时候,类型修饰符(*或&)仅仅修饰最近的那个变量。

    int* p1, p2;    // p1是int指针,p2是int

    9.引用本身不是一个对象,所以不能定义指向引用的指针,也没有引用的引用。

    10.decltype的表达式如果是加上了括号的变量,结果将是引用。

    int i = 0;
    decltype((i)) a;    // 错误,a是int&,没有初始化
    decltype(i) b;        // 正确,b是一个int
  • 相关阅读:
    深入理解Mysql——锁、事务与并发控制
    深入理解Mysql——锁、事务与并发控制
    vs code中Vue代码格式化的问题
    Vue中的父子传值问题
    用画布canvas画安卓logo
    用画布canvas画安卓logo
    用画布canvas画安卓logo
    用画布canvas画安卓logo
    软中断
    软中断
  • 原文地址:https://www.cnblogs.com/zoneofmine/p/7224923.html
Copyright © 2011-2022 走看看