指针和引用在C++中应用
来源:互联网 发布:win10引导ubuntu 编辑:程序博客网 时间:2024/06/08 14:41
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:《手把手教你架构3D游戏引擎》电子工业出版社和《Unity3D实战核心技术详解》电子工业出版社等。
CSDN视频网址:http://edu.csdn.net/lecturer/144
C和C ++支持与大多数其他编程语言不同的指针, 其他语言包括C ++,Java,Python,Ruby,Perl和PHP支持引用。
在表面上,引用和指针都非常相似,两者都用于使一个变量提供对另一个变量的访问。 同时提供许多相同的功能,这些不同机制之间的区别往往不清楚, 在本文中,我将尝试说明指针和引用之间的差异。
指针:指针是保存另一个变量的内存地址的变量, 需要使用*运算符来来访问它指向的内存位置。
引用:引用变量是别名,也就是现有变量的另一个名称。 一个引用,像一个指针也是通过存储一个对象的地址来实现的。
引用可以被认为是一个常量指针(不要与一个指向恒定值的指针混淆),具有自动间接,即编译器将为您应用*运算符。
int i = 3; // A pointer to variable i (or stores// address of i)int *ptr = &i; // A reference (or alias) for i.int &ref = i;二者区别:
1、重新分配:指针可以重新分配, 此属性对于实现数据结构(如链表,树等)很有用。请参见以下示例:
int x = 5;int y = 6;int *p;p = &x;p = &y;另一方面,引用不能重新分配,并且必须在初始化时分配。
int x = 5;int y = 6;int &r = x;
2、内存地址:一个指针在堆栈上有自己的内存地址和大小,而引用共享相同的内存地址(与原始变量),但也占用堆栈上的一些空间。 引用可以与指针非常相似的方式传递给函数,存储在类中等等。 指针是一个独立变量,可以分配新的地址值; 而引用一旦被赋值,将永远不会引用任何新对象,直到变量超出范围。
3、NULL值:指针可以直接分配NULL,而引用不能。 与引用相关联的约束(无NULL,无重新分配)确保底层操作不会遇到异常情况。
4、间接:您可以指向提供更多间接级别的指针的指针, 而引用仅提供一级间接。
5、算术运算:可以对指针执行各种算术运算,而引用没有称为参考算术的东西(但是可以使用引用指向的对象的地址,并在&obj + 5中进行指针算术运算)。
什么时候使用?
使用指针:实现链表,树等数据结构及其算法。
如果需要指针算术或传递NULL指针,则使用指针。 例如对于数组(请注意,数组访问是使用指针算术实现的)。
引用通常都优于指针, 这通常意味着引用在类的公共接口中最有用。
- 指针和引用在C++中应用
- C/C++中指针和引用
- C/C++中指针和引用
- c++:引用和指针
- C 函数指针 在OC中应用
- c和c++中const,指针和引用
- 引用、指针和指向指针的指针在函数形参中的应用
- c++中引用c和c中应用c++
- c中指针与引用
- C/C++中指针和引用之相关问题研究
- C/C++中指针和引用之相关问题研究
- C语言中结构体指针的定义和引用
- C/C++中指针和引用之相关问题研究
- C/C++中指针和引用之相关问题研究
- C/C++中指针和引用之相关问题研究
- C/C++中指针和引用之相关问题研究
- C/C++中指针和引用之相关问题研究
- C/C++中指针和引用之相关问题研究
- Android
- 第9篇:angular动态删除或插入节点元素
- public、protected和private使用含义
- 记oracle安装吃过的大亏之sqldeveloper.bat快捷方式找不到
- php 微信授权登录传参数方法
- 指针和引用在C++中应用
- PHP学习笔记12:字符串操作
- Node配置环境
- ios UIAppearance 协议
- select下拉框兼容写法
- DB2前滚测试
- 解决org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
- Item42 Consider emplacement instead of insertion
- IO、文件、NIO【四】