C++ Primer 5th笔记(2)chapter 2变量和基本类型:引用、const
1.引用refrence
定义:给对象起另外一个名字。
1.1 是两个类型一样的对象之间的:
eg.
int &i = 10;//错误double &f = i;//错误
引申:上面的代码编译后的代码等同于
const double temp = i;
double &f = temp;//而temp是一个临时变量,用户都不知道它,因此没有实际意义
1.2 常量的const初始化可以是表达式
int i = 0;
const int &r2 = 42;
const int &r3 = r1 * 2;
1.3 非常量引用和常量引用是不同的
int &r4 = r2;//error
1.4 指向指针的引用
int i = 42;
int *p;
int *&r = p;//r是一个引用,引用的是一个指针( 从右往左读)
r= &i; //令p指向i
*r = 0; //i的值为0
2. const
定义:const表示一个变量的值不能更改(所以它必须初始化)
int i = 0;
const int ci = i;//用对象初始化
2.1 当多个文件定义了同名的const变量,等同于在不同文件中分别定义了独立的变量。
如果多个文件要共享同一个const变量,则可以利用extern关键字
2.1 const的引用
定义:把引用绑定到const对象上。
eg,
const int ci = 1024;
const int &r1 = ci;
2.2 对const的引用,引用的可以是一个非const的对象(会被别人改变)
int i = 0;
int &r1 = i;
const int &r2 = i;
r1 = 0;//i的值被修改为0
2.3 指针和const
可以令指针指向常量,"指向常量的指针"不能用于改变其所指向对象的值。
const double pi = 3.14;
const double *cptr = π//OK
double *ptr = π//error,ptr是一个普通指针
*cptr = 42;//error:不能给*cptr赋值
2.4 const指针
定义:一个const变量(不能改变),它是一个指向某种类型的指针
int i = 0;
int *const cptr = &i;
const int ci = 0;
const int *const ccptr = &ci;//一个指向常量对象的常量指针
*ccptr = 1;//error
顶层const:右边的const表示指针本身是const
底层const:左边的const表示指针所指向的对象是一个常量
2.5
const int&可以绑定到一个普通的int上
const int* 可以绑定到一个普通的int*上
int i =0;
const int ci = 0;
const int *p2 = &ci;const int &r2 = i;
p2 = &i;
参考
[1]: 代码 https://github.com/thefistlei/cplusprimer/tree/main/cprimer
C++ Primer 5th笔记(2)chapter 2变量和基本类型:引用、const相关推荐
- C++ Primer 5th笔记(2)chapter 2变量和基本类型:constexpr 、auto、类型别名、decltype
1.constexpr和常量表达式 1.1 常量表达式 定义:变量的值在编译器的时候就可以得到是一个常量 eg. const int i = 0; 1.2 constexpr变量 让编译器来验证变量的 ...
- C++ Primer 5th笔记(2)chapter 2变量和基本类型:变量声明、关键字
0. 几个零星知识点 . 嵌套作用域:局部变量会覆盖全局变量 . char 在有些机器有符号,有的无符号. . 标识符大小写敏感. 1.变量声明和定义 c++ 将声明和定义分开来. 声明 extern ...
- c++ primer 5th 笔记:第二章
第二章:变量和基本类型 笔记: 1. c++语言规定一个int至少和一个short一样大,一个long至少和一个int一样大,一个long long至少和一个long一样大.其中,数据类型long l ...
- C++ Primer 5th笔记(chap 16 模板和泛型编程)模板实参推断和引用
template < typename T> void f (T &p) 函数参数p是一个模板类型参数T的引用, 编译器会应用正常的引用绑定规则: const 是底层的, 不是顶层 ...
- C++ Primer 5th笔记(5)chapter5 语句
1. for语句的多重定义 初始化那里的所有变量的基础类型必须相同 for(decltype(v.size())) i = 0, sz= v.size();
- C++ primer 5th笔记
目录2022年11月25日 周五 阴 第一.二章:变量和基本类型 基本内置类型 unsigned float与double 'A'与"A" 布尔类型转换时 初始化与赋值 初始化 声 ...
- c++ primer 5th 笔记
第1章 开始 本章以一个实际问题,书店问题,来简单的介绍C的基本特性.这个问题的代码将贯彻整本书,后面的章节会逐一讲解代码中涉及到的 C 语言特性. 这个问题具体,就是要保存书店的所有销售记录的档案, ...
- C++ Primer 5th笔记(2)chapter 2变量和基本类型
1. c++标准规定的算术类型的尺寸 类型名称 类型定义 类型长度 wchat_t 宽字符 16 char16_t unicode字符 16 char32_t unicode字符 32 short 短 ...
- C++ Primer 5th笔记(1)chapter 1
1. 文件重定向 定义:指定std::cin 和std::out的输入文件和输出文件 用法: xx.exe < infileName >outfileName eg: #include & ...
最新文章
- TCP 网络应用程序开发流程
- 利用windows 2003 实现×××服务器的组建与架构(一) 移动用户到站点之间的×××...
- 理论基础 —— 排序 —— 直接插入排序
- 每日小记 2017.2.14
- 团队编程项目作业1-成员简介及分工
- 内存之私有sql区和共享sql区
- 【图像融合】基于matlab curvelet变换图像融合【含Matlab源码 776期】
- 蓝桥杯2018国赛B组第四题 调手表
- android apk 微信登入_图文详解Android集成微信登录的步骤
- 5x2cv配对t检验(5x2cv paired t test)
- ZooKeeper应用——解决分布式系统单点故障
- 剪不断理还乱的前端和交互
- 文献管理软件zotero发布ios版本,支持webdav同步并且内置pdf阅读器
- Dataframe的创建
- 01 - Python 起源
- Telegram公布个人身份验证工具,可共享财务及ICO数据
- 萧乾升:4.14黄金,白银TD,纸白银,最新行情分析
- 一路问情热门论坛自动灌水机 v2007 免费
- NetBIOS主机名扫描工具nbtscan
- 5种jQuery美化下拉菜单列表插件
热门文章
- Java 洛谷 提交完题目的代码之后一直停留在 ( 正在等待编译……),刷新页面之后 ,显示 Unaccepted 0分
- java队列转集合_Java集合 使用Queue
- 致:测试工程师们!超2000种连接件,下载96页完整选型目录!
- 数据中心自动化及其优势
- 苹果原壁纸高清_苹果壁纸 | 高清图片全面屏壁纸
- php防止模拟请求,php防止伪造跨站请求实现程序_PHP教程
- 成功解决ValueError: (‘Unknown transform primitive years. ‘, ‘Call ft.primitives.list_primitives() to get
- Dataset之MapillaryVistas:MapillaryVistas数据集的简介、下载、使用方法之详细攻略
- Matlab:成功解决Expression or statements is incorrect--possibly unbalanced (,{,[.
- 成功解决 bs4\__init__.py:219: UserWarning: b'.' looks like a filename, not markup. You should probably