对比C++中的指针和引用
指针和引用在形式上比较好区分,由于有很多相似的功能,因此在使用上容易混淆。因此有必要对指针和引用进行对比,以便于在使用时使程序正确高效。
1.引用不可以为空,而指针可以为空。
我们知道引用是对象的别名,因此他不可以为空,因为引用的对象都不存在,怎么可能会有别名。因此在使用时必须对引用进行初始化。而指针可以指向任何对象,也可以不初始化。
2.使用指针之前要判空,而引用不必。
由于指针可以指向任何对象,也可以不指向任何对象,因此在使用前必须先进行判空。而引用则不必,因为引用是对象的别名,在进行引用的时候这个一定是合法的。因此,从这个角度来看,引用比指针安全。
3.引用不可以改变指向,但是指针可以改变指向,指向其他对象。
指针虽然不可以改变指向,但是他可以改变初始化对象的内容。例如++操作。
4.引用的大小是指所指变量的大小,而指针的大小是指针本身的大小(4个字节)。
5.指针比引用更安全
由于不存在空引用,并且引用一旦被初始化指向某一个对象,他就不能变为另一个对象的引用,因此引用很安全。而指针可以随时指向任何对象,并且可以不初始化,所以不安全。并且指针有可能产生野指针,造成内存泄漏。
对比C++中的指针和引用的更多相关文章
- C++ 中的指针、引用以及函数调用中的问题
参考链接:https://www.cnblogs.com/dolphin0520/archive/2011/04/03/2004869.html 函数传参的方式有三种: (1)值传递: (2)引用传递 ...
- C++中的指针与引用的区别与联系
引用与指针实质上都是间接地指代另一个变量,引用相当于该变量的外号或者小名,而指针实质上是指向该变量的地址进而操作该变量 区别1:指针的地址与该变量不同,但引用的地址与该变量相同相同 #include& ...
- 为什么C++中只有指针和引用才能实现多态?
代码: class A { public: virtual void Debug(){} }; class B:public A { public: virtual void Debug(){} }; ...
- 对比 C++ 和 Python,谈谈指针与引用
花下猫语:本文是学习群内 樱雨楼 小姐姐的投稿.之前已发布过她的一篇作品<当谈论迭代器时,我谈些什么?>,大受好评.本文依然是对比 C++ 与 Python,来探讨编程语言中极其重要的概念 ...
- 转贴:C++中指针和引用的区别
从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 而引用是一个别名,它在逻辑上不是独立的,它的存在具有 ...
- c++值传递,指针传递,引用传递以及指针与引用的区别
值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值.从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出.当函数内部需要修改参数,并且不希望这个改变影 ...
- C程序设计语言--指针和引用的区别
在看了一篇文章以后,http://coolshell.cn/articles/7992.html,说的是C和C++之间的缺陷,当然这篇文章说的非常高深了.所以就找了一些资料,分析了这两者的区别 在&l ...
- (C/C++)区别:数组与指针,指针与引用
1.数组跟指针的区别 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建.数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变. 指针可以随时指向任意类型 ...
- C/C++中指针和引用之相关问题研究
一.基本知识 指针和引用的声明方式: 声明指针: char* pc; 声明引用: char c = 'A' char& rc = c; 它们的区别: ①从现 ...
随机推荐
- sql盲注及其相关方法
Sql注入过程数据(后台数据不能回显到页面)不回显采用方法 1:构造逻辑判断 ▲left(database(),1)>’s’ //left()函数 ▲and ascii( ...
- 初识layer 快速入门
http://layer.layui.com/hello.html 如果,你初识layer,你对她不知所措,你甚至不知如何绑定事件… 那或许你应该用秒做单位,去认识她. 开始了解 第一步:部署 下载l ...
- Xmarks丢失书签
想体验下Xmarks,不同浏览器同步书签,听说很好用,就安装Chrome插件,没想到竟然把我的所有书签都丢了. 不过在网上找到了回复的办法,也很简单: 原始地址:http://irising.me/2 ...
- C内联汇编
用C写程序比直接用汇编写程序更简洁,可读性更好,但效率可能不如汇编程序,因为C程序毕竟要经由编译器生成汇编代码,尽管现代编译器的优化已经做得很好了,但还是不如手写的汇编代码.另外,有些平台相关的指令必 ...
- 【剑指offer】连续子数组最大和
思路dp很清楚,就是要注意细节. int FindGreatestSumOfSubArray(vector<int> array) { ; ], tempsum = array[]; // ...
- [LeetNode]Sort List
Sort a linked list in O(n log n) time using constant space complexity. 思路:分治+递归. /** * Definition fo ...
- jstl 的应用 java
JSTL :JSP Standard Tag Library,JSP标准标签库 1.导入包 jstl.jar standard.jar 2.页面中添加标识 <%@taglib uri=" ...
- Heroku 与 ASP.NET 5
一. Heroku 简单来讲,Heroku是一个支持多种语言.极易部署.多价位可免费的 Pass 平台,通过 Buildpack 搭建语言运行环境, 默认内建的大部分是 Web 开发中较为常见的语言, ...
- zoj 2686 Cycle Game 博弈论
其实规律很好找的,当从某点开始,向某一边找出非0的个数,为奇数时必胜. 代码如下: #include<iostream> #include<cstdio> using name ...
- HDU 5596/BestCoder Round #66 (div.2) GTW likes math 签到
GTW likes math Memory Limit: 131072/131072 K (Java/Others) 问题描述 某一天,GTW听了数学特级教师金龙鱼的课之后,开始做数学<从自主 ...