pointer和reference(指针和引用)的区别:*
1.reference一定得代表某个对象,即reference必须有初值;而point没有这种要求,因此它可以有null pointers。即:
pointer可以为空,但是reference 不能为空。
- 如果你的变量可能为空,那么你应该将其设计为pointer而不是refrence。反之,如果你的变量不能取空值,那么你应该将其设计为reference。
- reference既然不能为空,也就必须在定义的时候,它就必须被给予一个合理的值。而指针可以为空。
int a = 10;
int *p; //合法
int& r; //非法
int& r = a; //合法
以下行为要避免:
int *p = null; int& r = *p;
- 在reference和pointer都可以使用情况下,使用reference更安全。因为reference不能为空,所以在使用之前不需要判断其值是否为空。
2.没有所谓的null reference意味着references可能会比使用pointers更有效率,因为使用reference之前不需要测试其有效性。
3.pointer可以被重新赋值,指向另外一个对象,而reference却总是指向它最初获得的那个对象,类似于常量指针。
即:
pointer所指的对象可以改变,但是reference所指的对象始终不变(通过reference修改的值,最终都会修改reference所引用的那个对象的值)。
- 如果你所设计的变量在不同时刻需要指向不同的对象,那么需要将其设计为pointer。反之,可以设计为reference因为使用更安全。
string s1("hello");
string s2("world");
string& rString = s1; //rString引用的是s1对象
string *pString = &s2; //pString指向s2对象
rString = s2; //此处只是将s1的值修改为world,即将s2的值赋给s1;
pString = &s1; //此处pString将指向s1对象
pointer和reference(指针和引用)的区别:*相关推荐
- 【转】指针和引用的区别
c++中的引用与指针的区别 ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使 ...
- C++指针和引用的区别
从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 而引用是一个别名,它在逻辑上不是独立的,它的存在具有 ...
- C++中指针和引用的区别与联系
原文地址:http://blog.csdn.net/thisispan/article/details/7456169 ★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址 ...
- c++值传递,指针传递,引用传递以及指针与引用的区别
值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出.当函数内部需要修改参数,并且不希望这个改变影 ...
- 24.指针和引用的区别
在面试时经常会被问到 指针和引用的区别,虽然问题很简单但还是总结一下! 指针和引用的区别其实有太多了,主要的区别大概是这样子: 1)指针声明的时候可以不被初始化(有可能成为野指针),但是引用必须要进行 ...
- 2020-12-6(从反汇编理解指针和引用的区别)
这是我10个月前看到的一篇博客吧,感觉分析指针和引用的文章这是我目前见过讲解得最清晰的一篇: 本文主要基于反汇编代码,从初始化.赋值以及取地址三个角度来理解指针和引用的区别. 初始化 写出以下代码并查 ...
- C/C++ 中指针和引用的区别
C/C++ 中指针和引用的区别 1.指针有自己的一块空间,而引用只是一个别名: 2.使用 sizeof 看一个指针的大小是 4,而引用则是被引用对象的大小: 3.指针可以被初始化为 NULL,而引用必 ...
- python指针引用的区别_C++基础:指针和引用的区别
C++基础:指针和引用的区别 *例 int a; int &b = a; 其中b是a的引用,b引用了a,a被b引用.b 相当于 a 的别名,对 b 的任何操作就是对a的操作.所以b既不是a的拷 ...
- C++中指针与引用的区别
指针的本质 指针p也是对象,只不过p存储的数据类型是它所指的对象的地址.可以通过解引用操作符""来访问对象的值,即p. 对象有常量(const)和非常量之分,如果指针本身是常量,即 ...
最新文章
- SLAM学习--------相机位姿表示-李群李代数
- android ble不配对接收广播数据_蓝牙低功耗(BLE)学习笔记_0
- linux c/c++ 原子操作库 atomic atomic_flag 简介
- Linux上的gitlab日常操作
- 服务器高并发时请求报错_基于redis的分布式锁防止高并发重复请求
- 挽救Centos7.0
- $.ajax 跨域请求 Web Api
- js 控制文件名与文件大小
- Leetcode-区域和检索-数组不可变
- MobaXterm怎么复制粘贴以及多窗口执行
- Linux Shell编程笔记一:相关命令
- yum文件,来自网络
- TheFatRat生成免杀木马(powershell)报错问题
- 三星固态硬盘ssd产品线收集
- 实时错误‘94’无效使用null值
- 统信UOS系统安装mysql_统信UOS系统手动安装分区方案
- 小松的STM32教程(6)——ADC
- 5G是什么? --5G
- 人工智能下的中秋祝福
- java 构造方法能被继承吗_Java中构造函数可以被继承么