C++ Primer 中文第五版笔记

本文介绍了C++中的基本内置类型和复合类型,包括变量、对象、引用、指针及其特性。特别是,引用必须初始化且不能改变所引用的对象,指针可以为空或者指向对象的地址。const关键字用于声明常量和常量引用,而constexpr用于声明常量表达式。此外,文章还提到了类型别名、auto和decltype等特性,以及自定义数据结构的基本概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++ Primer

第2章 变量和基本类型

基本内置类型

变量

  • 对象:能存储数据并具有某种类型的内存空间

复合类型

引用 &d

  • 引用 = 起别名,&d的形式

  • 必须初始化,且必须是一个对象,不能是值,初始化后引用的对象不可更改

  • 类型匹配

指针 *d

  • 指针存放某个对象的地址,用&获取该地址

  • 当指针指向一个对象时,用解引用符*访问这个对象

  • 空指针(初始化)

    • int *p = nullptr;

    • int *p = 0;

  • 两个指针相同的可能

    • 都为空

    • 都指向同一个对象

    • 指向同一个对象的下一地址

    • 有可能相同的情况:一个指向同一个对象,另一个指向同一个对象的下一地址

  • void*指针

    • 可以存放任意类型对象的地址

指向指针的指针

  • *的个数区分指针的级别

    • **p表示指向指针的指针

    • ***p表示指向指针的指针的指针

指向指针的引用

  • int i = 42;
    int *p;//p是一个int型指针
    int *&r = p;//r是指针p的引用
    //理解r是什么?从右向左阅读r的定义,离变量名最近的符号&说明r是一个引用,*说明r引用的是一个指针

const限定符

初始化

  • 创建const对象必须初始化

  • const一般仅在文件内有效,如果想多文件共享const对象,定义之前应该加上extern关键字

    • extern const int bufSize = ;

引用常量

cosnt int ci = 1024;
const int &r1 = ci;//正确,引用是常量,引用的对象也是常量
int &r2 = ci;//错误,非常量引用指向一个常量对象

初始化和对const的引用

  • 引用常量的一个例外

    • 常量引用指向非常量

      • int i = 42;
        const int &r1 = i;//正确
        int &r2 = r1 * 2;//错误,非常量引用指向常量引用
  • 总结:非常量引用不能指向常量对象;不能通过常量引用修改指向非常量对象的值,但可以通过修改非常量对象的值修改

    • int i = 1;
      int &r1 = i;
      const int &r2 = i;
      r1 = 0;//正确
      r2 = 0;//错误,不能通过常量引用修改对象的值

指针和const

  • 指向常量对象的只能是常量指针,普通指针不可以

  • 一般指针的类型和所指对象的类型一致

顶层/底层const

constexpr

  • 认定变量是一个常量表达式,就声明为constexpr

类型别名

  • typedef double wages;

auto类型说明符

  • 必须有初始值

  • auto会忽视顶层const,保留底层const

decltype类型指示符

  • decltype(a) x = 0;//取a的类型为x赋予类型,x的初始值为0

自定义数据结构

编写头文件

预处理器

  • 头文件保护符

    • #define

    • #ifdef变量已定义时为真

    • #ifndef变量未定义时为真

    • 检查结果为真,则执行至#endif停止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值