C++ primer 笔记2. 变量和基本类型

基本内置类型

signed char范围:-128 ~ 127

unsigned char范围:0 ~ 255

  • 赋给无符号类型和符号类型超过范围的值会发生的情况:

    无符号类型:初始值对无符号类型表示数值总数取模后的余数

    符号类型:未定义

  • 当算数表达式中既有无符号数又有int时,将int转换成无符号数

  • 字符串字面值:

    实质是由常量字符构成的数组(char[])

    编译器在每个字符串结尾添加空字符'\0'

 

变量

  • 变量默认初始化:

    函数体外的变量被初始化为0

    函数体内部的内置类型变量将不被初始化

  • 特殊初始化方式:

    如果列表{}初始化时初始值类型转换存在信息丢失风险(如3.14赋值给int),编译器将报错

  • 利用extern声明而并非定义变量:

 

 

复合类型

1. 引用

必须初始化,必须绑定在对象上,不允许改变引用绑定的对象

引用不是对象,不能定义引用的引用

2. 指针

  • 生成空指针的方法:

  • 指向指针的引用:

从右向左阅读r的定义,离变量名最近的符号对变量类型有直接的影响

 

const限定符

const变量必须初始化

编译器在编译过程中把const变量的地方替换成对应的值

如果需要在多个文件之间共享,需要在声明和定义处添加extern关键字

 

引用

  • 对常量的引用必须也为常量引用:

  • 常量引用可以指向非常量,不允许通过该引用修改变量:

  • 允许将常量引用绑定到表达式上,编译器会构造一个临时量,将常量引用绑定到临时量对象上

 

指针

  • 存放常量对象地址必须用指向常量的指针(指向常量的指针可以指向非常量对象,不能通过指针改变变量的值):

  • 常量指针必须初始化,且不能改变其存放的地址

顶层const:本身是个常量

底层const:所指对象是个常量

  • 执行拷贝时,顶层const不受影响,底层const必须一致:

 

constexpr常量表达式

顶层const

值不会改变,在编译过程就能得到计算结果的表达式

constexpr指针能够指向地址固定不变的对象,如函数体外部对象

 

处理类型

类别别名

  • 定义方式:

  • 对指针的定义:

 

auto类型

auto忽略顶层const,保留底层const

 

decltype指示符

  • 根据表达式推断类型

  • 引用:

 

自定义数据结构

类的数据成员可以提供初始值,没有初始值的将被默认初始化

  • 头文件保护符:

    第一次包含xxx.h时,会执行所有内容;后面再一次包含xxx.h时,会忽略#ifndef 和 #endif之间部分

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值