指针和引用的区别

指针和引用的区别一 指针和引用的定义和性质区别 1 指针 指针是一个变量 只不过这个变量存储的是一个地址 指向内存的一个存储单元 即指针是一个实体 而引用跟原来的变量实质上是一个东西 只不过是原变量的一个别名而已 如 inta 1 int p amp a inta 1 int amp b a 上面定义了一个整型变量和一个指针变量 p 该指针变量指向 a 的存储单元 即 p 的值是 a 存储单元的地址 而下面 2 句定义了一个整型变量 a 和这个整型 a 的引用 b 事实上 a 和 b 是同一个东西 在内存占有同一个存

一、指针和引用的定义和性质区别
(1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元,即指针是一个实体;而引用跟原来的变量实质上是一个东西,只不过是原变量的一个别名而已。如:

int a = 1; int *p = &a; int a = 1; int &b = a; 

上面定义了一个整型变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址。

而下面2句定义了一个整型变量a和这个整型a的引用b,事实上a和b是同一个东西,在内存占有同一个存储单元。

二、相同点

都是地址的概念;

指针指向一块内存,它的内容是所指内存的地址;

引用是某块内存的别名。

三、联系

1、引用在语言内部用指针实现(如何实现?)。

2、对一般应用而言,把引用理解为指针,不会犯严重语义错误。引用是操作受限了的指针(仅容许取内容操作)。

引用的一些规则如下:

上面的程序看起来象在玩文字游戏,没有体现出引用的价值。引用的主要功能是传递函数的参数和返回值。C++语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。

“引用传递”的性质像“指针传递”,而书写方式像“值传递”。实际上“引用”可以做的任何事情“指针”也都能够做,为什么还要“引用”这东西?

答案是“用适当的工具做恰如其分的工作”。

指针能够毫无约束地操作内存中的如何东西,尽管指针功能强大,但是非常危险。

就象一把刀,它可以用来砍树、裁纸、修指甲、理发等等,谁敢这样用?

如果的确只需要借用一下某个对象的“别名”,那么就用“引用”,而不要用“指针”,以免发生意外。比如说,某人需要一份证明,本来在文件上盖上公章的印子就行了,如果把取公章的钥匙交给他,那么他就获得了不该有的权利。

总的来说,在以下情况下你应该使用指针:

一是你考虑到存在不指向任何对象的可能(在这种情况下,你能够设置指针为空),

二是你需要能够在不同的时刻指向不同的对象(在这种情况下,你能改变指针的指向)。如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么你应该使用引用。

还有一种情况,就是当你重载某个操作符时,你应该使用引用。

尽可能使用引用,不得已时使用指针。

当你不需要“重新指向”时,引用一般优先于指针被选用。这通常意味着引用用于类的公有接口时更有用。引用出现的典型场合是对象的表面,而指针用于对象内部。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204792.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:31
下一篇 2026年3月19日 下午7:32


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号