指针(pointer)和参考(reference)的区别

在讨论指针和引用之间的区别之前,让我们先简单地看一下这两个术语的含义。在程序中,数据占用内存。为了访问数据,应该知道数据在执行时被放在内存中的确切位置。指针变量和引用变量用于访问这些数据并操作它们所在的内存地址。也就是说,指针和引用都可以用来间接引用对象。它们基本上把内存地址作为它们的值。指针和引用之间的关键区别在于指针是存储另一个变量内存位置地址的变量,而引用是引用另一个变量的变量。指针和引用这...

指针(pointer)和参考(reference)的区别

在讨论指针和引用之间的区别之前,让我们先简单地看一下这两个术语的含义。在程序中,数据占用内存。为了访问数据,应该知道数据在执行时被放在内存中的确切位置。指针变量和引用变量用于访问这些数据并操作它们所在的内存地址。也就是说,指针和引用都可以用来间接引用对象。它们基本上把内存地址作为它们的值。指针和引用之间的关键区别在于指针是存储另一个变量内存位置地址的变量,而引用是引用另一个变量的变量。指针和引用这两种机制有不同的语法和用法。

什么是指针(a pointer)?

指针是一种编程语言对象,它将值的内存地址存储在计算内存中。

c++语法;

积分i=5;

int*ptr=&i;

第一行定义了一个值为5初始化的变量。第二行定义指向变量内存地址的指针。这里,“ptr”被声明为“pointer to int”类型的对象,其初始值是对象i的地址。实际上,ptr变量通过存储其内存地址指向i。

获取存储在内存位置的值称为取消引用。*运算符用于取消对指针的引用。引用表达式ptr之后的间接引用。

要改变i的值,可以使用以下赋值;

*ptr=20;

指针也可以重新分配以引用不同的对象。

空指针是一种特殊类型的指针。空指针通常用0或null表示,并且指向零。在一个很好的例子中,一个指针被分配给一个不被指定为空的指针。此赋值可用于逻辑操作和条件。

指针可用于存储和管理动态分配内存的地址。使用指针可以有效地实现和控制数据结构(如堆栈、队列和列表)。例如,队列可以有两个指针:头指针和尾指针。指针也可以用来按变量的地址传递变量,这样可以更改值。直接操作内存或内存映射设备也可以通过使用指针来处理。

指针允许对寻址内存进行受保护和无保护的访问。因此,必须采取必要的预防措施来验证指针的内容是否有效。否则,用无效的内存地址取消引用指针可能会导致程序崩溃。

指针在语言中支持,如C、C++、Pascal和许多汇编语言。

指针(pointer)和参考(reference)的区别

指向与变量b关联的内存地址的指针a。

什么是参考文献(a reference)?

引用只是存储在内存中的值的替代标识符。它使程序能够间接地访问特定的数据。

c++语法;

积分i=5;

int&ref=i;

第一行定义了一个值为5初始化的变量。第二行将“ref”声明为引用i的“reference to int”类型的对象。如果引用被实现为存储在内存中的特定数据的物理地址,则引用不同于数据本身。

一旦定义了引用,就不能重新分配新值。引用总是引用初始化它的对象。在下面的赋值中,ref仍然引用i,但是值现在是20。

参考值=20;

根据上面的例子,取消引用引用不需要任何运算符。

当变量总是引用对象时,可以使用引用。这是因为,与指针不同,引用不能为null,并且必须始终在初始化时赋值。由于引用必须始终引用某个对象,因此将这样的变量作为引用可以确保程序能够高效、正确地工作。如果没有空引用,则不必测试引用变量的有效性。

引用变量可用于有效地将大数据作为参数传递给过程。引用还用于在不同代码区域之间共享大数据,因为每个代码都保留对数据的引用。

诸如C++、java、python、perl、php、Ruby等编程语言支持引用。

指针(pointer)和参考(reference)的区别

指针和引用的定义

指针:指针是存储在计算内存中的对象的内存地址。

引用:引用是对象的替代标识符或别名。

指针和引用的特性

宣言

指针:用*运算符声明指针。

引用:使用&运算符声明引用。

解引用

指针:指针变量需要取消对*运算符的引用。

引用:引用变量不需要取消引用运算符。

初始化

指针:指针可以初始化为null。这样的变量称为空指针。

引用:引用不能初始化为null。没有空引用。引用必须始终引用对象。

重新分配

指针:可以重新分配指针变量以引用不同的对象。

引用:不能重新分配引用变量。它总是引用初始化它的对象。

使用

指针:当不存在引用任何内容的可能性,或者需要在不同的时间引用不同的对象时,应该使用指针变量。

引用:当总是有一个对象要引用,并且不需要使用引用变量引用对象以外的任何对象时,应该使用引用变量。

用法的应用

指针和指针可以用来实现数据结构。

引用:引用变量可以用在函数参数中,返回类型定义有用的接口。

使用的语言:

指针:编程语言如C、C++、Pascal和许多汇编语言支持指针。

参考:编程语言如C++、java、python、perl、php、Ruby等支持参考。

Image Courtesy: “Pointers” by This file was made by User:SvenTranslation.Own work.This vector image was created with Inkscape.(CC BY-SA 3.0) via Comm*** – 

  • 发表于 2020-10-28 19:41
  • 阅读 ( 259 )
  • 分类:IT

你可能感兴趣的文章

值类型(value type)和参考类型(reference type)的区别

...据值,而引用类型保存指向另一个保存数据的内存位置的指针。 目录 1. 概述和主要区别 2. 什么是价值类型 3. 什么是参考类型 4. 值类型和引用类型的相似性 5. 并列比较-值类型与表格形式的引用类型 6.摘要 什么是值类型(value typ...

  • 发布于 2020-10-19 07:42
  • 阅读 ( 504 )

按值调用(call by value)和通过引用调用(call by reference)的区别

...函数。参考下面用代码块环境编写的C程序。 图03:使用指针交换两个数字 根据下面的给定示例,“a”的值为20,“b”的值为30。程序员可以使用swap(&a,&b)函数发送“a”和“b”的地址,而不是传递“a”和“b”的副本...

  • 发布于 2020-10-20 00:32
  • 阅读 ( 492 )

指针(pointer)和参考(reference)的区别

指针(pointer)和参考(reference)的区别 在讨论指针和引用之间的区别之前,让我们先简单地看一下这两个术语的含义。在程序中,数据占用内存。为了访问数据,应该知道数据在执行时被放在内存中的确切位置。指针变量和引用...

  • 发布于 2020-10-28 19:41
  • 阅读 ( 259 )

参考文献(bibliography)和参考文献(references)的区别

参考书目与参考文献 大多数时候,人们并不认为参考书目和参考文献之间有什么区别。他们常常误以为两者是同一个。然而,它们是不同的,并在不同的上下文中使用每一篇文章或文章或书。 书目是列出在写一篇文章或一本...

  • 发布于 2021-06-22 15:07
  • 阅读 ( 289 )

整数(integer)和指针(pointer)的区别

整数与指针 “整数”和“指针”在大多数计算机编程语言中都有应用。 编程语言中的“整数”可以定义为表示数学子集的任何数据类型。另一方面,“指针”可以定义为一种类型,它引用或指向存储在计算机内存某个部分的...

  • 发布于 2021-06-23 14:07
  • 阅读 ( 240 )

指针(pointer)和参考(reference)的区别

...地理解哲学,让我们来理解两者的区别。 什么是指针(a pointer)? 每个变量都是一个内存位置,由其地址定义,并与一个标识符配对,该标识符包含一些在程序运行过程中可能更改的值。简单来说,变量是表示一个量的符号。 指...

  • 发布于 2021-06-25 06:41
  • 阅读 ( 455 )

参考(reference)和参考文献(bibliography)的区别

主要差异参考(main difference reference) vs. 参考文献(bibliography) 参考文献和参考书目都是指作品结尾处的引文列表。虽然这两个术语被大多数人互换使用,但参考文献和参考书目之间有着明显的区别。参考文献和参考书目的主要区别...

  • 发布于 2021-06-27 20:05
  • 阅读 ( 442 )

引用(citation)和参考(reference)的区别

主要差异引用(main difference citation) vs. 参考(reference) 在学术写作中,每当你谈论别人的想法、观点或发现等时,你必须引用引用。你不能把别人的想法说成是你自己的想法;利用别人的想法,不包括引用或引用被认为是学...

  • 发布于 2021-06-27 21:16
  • 阅读 ( 436 )

数组(array)和指针(pointer)的区别

...。换句话说,数组的内存分配是静态的。 什么是指针(a pointer)? 变量是存储值的内存位置。每个内存位置都有一个地址来标识它。 Figure 2: Pointer 指针是存储另一个变量地址的变量。指针是在存储变量地址之前声明的。星号*用于...

  • 发布于 2021-06-30 23:59
  • 阅读 ( 682 )

堆栈指针(stack pointer)和程序计数器(program counter)的区别

...程序计数器,寄存器,堆栈指针 什么是堆栈指针(a stack pointer)? 堆栈是计算机中的一种数据结构。向堆栈中**新项称为push,而从堆栈中删除项称为pop。例如,假设有三个元素A、B和C。推送到堆栈的第一个项目是A。然后加上B和C...

  • 发布于 2021-07-01 06:52
  • 阅读 ( 614 )
朴首席的国旻狗
朴首席的国旻狗

0 篇文章

相关推荐