C++Primer学习之一引用和指针
一.引用
引用是一种复合类型,引用分为左值引用和右值引用,其中右值引用时C++11提出来的,
常说的引用其意为左值引用。注意:引用不是对象,它是一个对象(变量)的别名,不能改变引用的对象,故必须在初始化的确定引用的对象。
(1)引用(左值引用)
引用的类型必须和被引用变量的类型一致,但有两种例外情况。
①const引用
double dval = 3.14;
Const int &r1 = dval;
其内部转化为:
Const int temp = dval;
Const int &r1 = temp;
temp是一个临时量,即是一个未命名的对象。所以如果r1不是常量引用,那么即是允许通过引用改变常量了,故C++语言将它归为非法,编译报错。
②C++Primer p534 // 看到再完善
(2)右值引用 // 看到再完善
C++Primer p471
二. 指针
关于const与constexpr见下一篇文章详细介绍。
(1)指针和const
如:
Const int * const p; // 这里的P是一个常量指针(右边const确定),指向整形常量(左边const确定)。
(2)指针和constexpr
如:
Constexpr int *p1; // 这里的p1是一个指向整形常量指针。
Constexpr const int *p2; //这里的p2是指向整形常量的常量指针。
(3)指针和类型别名
如:
typedef char *pstring;
Const pstring ctrs = 0;//cstr是指向char的常量指针
Const char * str = 0; // str是指向const char的指针
Const pstring *ps; // ps是一个指针,它的对象是指向char的常量指针
C++Primer学习之一引用和指针相关推荐
- [C++再学习系列] 引用和指针
下面是网上关于引用和指针区别的常见答案: 引用和指针有如下三种区别: 1 引用必须在声明时初始化,而指针不用: 2 NULL不能引用,而指针可指向NULL: 3 引用一旦声明,引用的对象不能改变(但对 ...
- 《C++ Primer》引用和指针
学习C++的时候,我越来越感觉如果没有真正学会引用和指针,那么其他的部分就非常难以理解.因此,对于C++来说,引用和指针是绝对基础而又重要的. 引用 我们可以想象一下,对门王奶奶养了一只加菲猫,王奶奶 ...
- 2020-09-25C++学习笔记引用2:二级指针形参与指针形参的使用方法和区别重难点,主看综合代码(1、指针形参2、引用形参3、二级指针形参4、指针引用形参)
2020-09-25C++学习笔记引用2:二级指针形参与指针引用搭配做形参的使用方法区别重难点,注意事项主看综合代码(1.指针形参2.引用形参3.二级指针形参4.指针引用形参) 1.指针引用 #inc ...
- (4)风色从零单排《C++ Primer》 变量,引用,指针
从零单排<C++ Primer> --(4)变量,引用,指针 变量的初始化 所谓变量的初始化,指在创建变量的同时给予值. 初始化方法: int units_sold = 0; int ...
- C++学习——引用和指针
文章目录 1. 引用和指针的区别? 2. C++中的指针参数传递和引用参数传递 1. 引用和指针的区别? 指针是一个实体,需要分配内存空间.引用只是变量的别名,不需要分配内存空间. #include& ...
- C++ Primer 学习笔记(第四章:表达式)
2019独角兽企业重金招聘Python工程师标准>>> ##C++ Primer 学习笔记(第四章:表达式) [TOC] ###4.1 基础 左值和右值: 当一个对象被用作右值的时候 ...
- 如何正确的通过 C++ Primer 学习 C++?(转自知乎)
作者:dawnmist 链接:https://www.zhihu.com/question/32087709/answer/54936403 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 个 ...
- c++primer学习笔记
c++ primer 5e学习笔记 第1章 1.标准库 类型和函数的集合,每个c++编译器都必须支持. 2.()运算符:调用运算符.跟随在函数名后,起调用函数的作用 第2章 1.p32:char在一些 ...
- 【C++ Primer 学习笔记】: 容器和算法之【泛型算法】
本系列博客主要是在学习 C++ Primer 时的一些总结和笔记. [C++ Primer 学习笔记]: 容器和算法之[泛型算法] 本文地址:http://blog.csdn.net/shanglia ...
最新文章
- 用漫画了解 Linux 内核到底长啥样
- 15个可交互的真实房屋场景,Silvio/李飞飞组开源大型室内场景的模拟环境iGibson...
- IDT 信息设计工具使用
- 预加载显示图片的艺术
- MySQL--字符集
- androidstudio build tools安装_Android Studio4.0 安装及配置
- 2019年,50万大数据DT粉丝都爱的10本书
- java重定向url怎么写_Java:如何从重定向的URL中读取内容?
- 一波情人节海报温暖来袭,注定与众不同
- python做的大型游戏_Python有做大型游戏的潜力吗?
- 几行 python 代码合成 gif / 微信表情~与恶意合成软件说再见【文末附代码】
- 机器学习——卷积神经网络计算
- Python函数参数类型*、**的区别
- ASCLL码对照表02(可显示字符)
- MATLAB学习之均值滤波
- arch模型的思路_ARCH模型介绍.ppt
- dango mysql 的问题
- css怎么随着鼠标移动,利用CSS sprites制作随着鼠标移动的动画背景
- Android SnackBar
- MapReduce系列之MapReduce的输出
热门文章
- leetcode combinations java_[LeetCode][Java] Combinations
- html里面Meta标签的使用
- esc指令检查打印状态_Z.115 胶片自助打印设备
- java 水印乱码,linux java程序加水印及中文乱码方案
- mysql have_mysql having的用法
- pyqt5 获取Qlabel中的图片并对其进行处理(包括Qimage转换为Mat)
- python实例方法、类方法@classmethod、静态方法@staticmethod和属性方法@property区别
- python_文件操作代码实例
- vi - a linux command
- javascript的事件冒泡,阻止事件冒泡和事件委托, 事件委托是事件冒泡的一个应用。...