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

指针和引用都是C和C++中最强大的特性,它允许程序员直接处理内存地址,以进行高效的内存管理。...

指针和引用都是C和C++中最强大的特性,它允许程序员直接处理内存地址,以进行高效的内存管理。

两者都是用于间接引用其他对象的变量,它们在曲面上具有一些共同的特征。虽然它们有很多共同的功能,但理解起来也非常复杂。

指针是保存另一个变量的内存地址的变量,而引用类似于指针,可以用来间接引用另一个变量。

大多数程序员似乎对何时使用指针和何时使用引用有了一定的了解,但他们经常遇到一些解决方案似乎不明确的问题。

为了更好地理解哲学,让我们来理解两者的区别。

什么是指针(a pointer)?

每个变量都是一个内存位置,由其地址定义,并与一个标识符配对,该标识符包含一些在程序运行过程中可能更改的值。简单来说,变量是表示一个量的符号。

指针是包含另一个变量的内存地址的变量。指针只不过是地址,存储指针的变量称为指针变量。

其思想是使用标识符(或名称)而不是数字地址来减轻编程负担,从而降低程序的复杂性。由于这些地址指的是计算机内存中的实际位置,指针可用于访问和操作内存中存储的内容。

与任何变量或常量一样,必须为其类型声明指针。由于指针包含属于单独数据类型的内存地址,因此必须使用指针声明它们,然后才能使用它们。指针声明的一般形式是:

数据类型*变量名称;

这里,“datatype”是指针的基类型,“var name”是指针变量。此处的星号(*)用于声明指针,该指针将变量“var name”指定为指针变量。

int*p;//整数指针

浮点*x;//浮点指针

这里,变量“p”指向一个整数数据类型,该数据类型被声明为“int”,它表示变量的数据类型。类似地,在第二个示例中,“float”是指变量“x”的数据类型,该变量实际上被指定为指向浮点变量的指针。

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

 

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

引用就像是间接访问变量的指针。它就像另一个变量的别名,意味着它只是一个已经存在的变量的另一个名称。

它允许程序员为变量创建第二个名称,他们可以使用该名称来操作存储在该变量中的内容。它是一个实体,是另一个变量的别名,它与原始变量具有相同的地址。它支持按引用传递作为函数形式参数,一旦定义为引用一个变量,它就不能被重置,这意味着它不能被引用到另一个变量。

与指针不同,它们不需要解引用操作符来访问值;实际上,它们可以像普通变量一样使用。

国际一级;

内部(&A);ri=i;

这里,“ri”是初始化为“i”的整数引用。它将“ri”声明为“reference to int”类型的对象。引用很容易与作为自变量的指针混淆,指针的地址值一旦创建就不能重新赋值。

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

 

指针和引用之间的差异

  1. 指针和引用基础

–两者在可用性方面提供了几乎相似的功能,区别可能很棘手。指针只是一个存储另一个变量的内存地址的变量,而引用就像已经存在的变量的别名。它为变量创建第二个名称,该名称可用于修改存储在该变量中的内容。

  1. 指针和引用的声明

–指针类似于存储数据的任何其他变量。与其他变量不同,指针变量存储内存地址而不是值。使用间接运算符*取消对指针的引用,以访问指针所指向的变量的内存位置。另一方面,引用不需要任何解引用操作符来访问值。

  1. 指针和引用的重新分配

–不像指针可以在任何时候初始化,引用必须在初始化时分配。指针可以直接访问,而引用不能直接访问。

  1. 指针和引用的内存地址

–指针变量在内存中有自己的位置,这意味着在声明指针时,指定的位置是分配给每个内存单元的内存地址。指针变量与内存中保存的地址相同。另一方面,引用变量是另一个变量的别名,因此取引用变量的地址。

  1. 指针和引用的空值

–NULL表示列表的结尾,表示值未知,并指定变量没有有效的地址空间。空值可以直接赋给指针变量,这表明它不指向任何地方,而空值不能赋给引用变量。

指针与参考:比较图

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

总结 - 指针的位置(of pointer) vs. 参考(reference)

在参考文献之前,指针一直是C/C++程序员讨论的热门话题之一。参考文献有点类似于指针,但在比较中它们有各自的优点和缺点。虽然两者都可以用来改变一个函数在另一个函数中的局部变量,但它们有各自的区别。这两个都是C和C++中的强大特性,它们允许您直接操作内存,但有少数例外。指针保存变量的内存地址,而引用只是另一个变量的别名。

 

  • 发表于 2021-06-25 06:41
  • 阅读 ( 455 )
  • 分类: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
  • 阅读 ( 258 )

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

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

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

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

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

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

指针(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
  • 阅读 ( 681 )

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

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

  • 发布于 2021-07-01 06:52
  • 阅读 ( 614 )
啥事儿
啥事儿

0 篇文章

相关推荐