《Primer C++》读书笔记(二):第2章 变量和基本类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jgirl_333/article/details/80301013

第2章 变量和基本类型

《C++Primer》


  • 当赋值给带符号类型一个超出它表示范围的值,结果是的未定义的。
#include <iostream>
using namespace std;

int main(int argc, char const *argv[])
{
    signed char c = 256;
    cout<<"c = "<<endl;
    return 0;
}

运行结果:
2-1

  • 指针和引用的区别
    1)指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以指向几个不同的对象;引用不是一个对象,无法令引用重新绑定到另外的对象
    2)指针无须再定义时赋初值,和其他内置类型一样,在块作用域内定义的指针如果没有被初始化,也将拥有一个不确定的值;引用必须在定义时赋初值

  • 不能直接将int变量赋值给int指针

#include <iostream>
using namespace std;

int main(int argc, char const *argv[])
{
    int i = 1;
    int *p = i;
    cout<<*p<<endl;
    return 0;
}

运行结果:
2-2

  • 给定指针p,如何判断它是否指向一个合法的对象
    1)在正常初始化的情况下,使用if(p)进行判断即可
    2)在不注意初始化所有指针的情况下,将if(p)置于try结构中,如果程序块顺利运行,则p合法,否则,p不合法

  • 当使用了类型别名的声明语句时,错误的做法是把类型别名替换成本来的样子

typedef char *pstring;
const pstring cstr = 0;
const pstring *ps;

const char *cstr = 0;   // 是对const pstring cstr的错误理解
  • 给一个初始值绑定一个const引用时,此时的const是指底层const

  • auto和decltype的区别
    1)auto类型说明符用编译器计算变量的初始值并推断其类型,而decltype只让编译器分析表达式并得到它的类型,并不实际计算表达式的值
    2)编译器推断出来的auto类型忽略顶层const,decltype保留顶层const
    3)与auto不同,如果decltype的表达式加上圆括号,则返回引用类型

猜你喜欢

转载自blog.csdn.net/Jgirl_333/article/details/80301013