Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指针和引用的功能 我是C++初学者。几周前刚开始学习。作为一名程序员,我真的对提高自己的技能很感兴趣,在过去的几天里,有些事情让我感到困惑。这是指针。指针和引用运算符。我的问题是,指针和引用操作符的功能到底是什么?我如何知道何时使用它们,它们的用途和常用用法是什么。任何包含使用解引用和引用的通用算法的示例都将受到极大的赞赏_C++_Algorithm_Pointers_Reference - Fatal编程技术网

指针和引用的功能 我是C++初学者。几周前刚开始学习。作为一名程序员,我真的对提高自己的技能很感兴趣,在过去的几天里,有些事情让我感到困惑。这是指针。指针和引用运算符。我的问题是,指针和引用操作符的功能到底是什么?我如何知道何时使用它们,它们的用途和常用用法是什么。任何包含使用解引用和引用的通用算法的示例都将受到极大的赞赏

指针和引用的功能 我是C++初学者。几周前刚开始学习。作为一名程序员,我真的对提高自己的技能很感兴趣,在过去的几天里,有些事情让我感到困惑。这是指针。指针和引用运算符。我的问题是,指针和引用操作符的功能到底是什么?我如何知道何时使用它们,它们的用途和常用用法是什么。任何包含使用解引用和引用的通用算法的示例都将受到极大的赞赏,c++,algorithm,pointers,reference,C++,Algorithm,Pointers,Reference,我如何使用引用和取消引用来成为一名更好的程序员,并改进我的算法(并可能使其更简单)? 谢谢:D当然可以。接受的答案很好地解释了指针和常见错误 更新:我自己的几句话 指针是一串位,就像任何其他类型的变量一样。我们经常使用它们,因为它们有几个非常方便的特性: 它们的大小(以字节为单位)是固定的,因此知道需要读取多少字节才能获得指针的值是很简单的 当使用其他类型的变量(例如对象)时,需要有一些机制,以便编译器知道每个对象有多大。这引入了各种不同语言和编译器的限制。指针没有这样的问题 它们的大小也

我如何使用引用和取消引用来成为一名更好的程序员,并改进我的算法(并可能使其更简单)?

谢谢:D

当然可以。接受的答案很好地解释了指针和常见错误

更新:我自己的几句话

指针是一串位,就像任何其他类型的变量一样。我们经常使用它们,因为它们有几个非常方便的特性:

  • 它们的大小(以字节为单位)是固定的,因此知道需要读取多少字节才能获得指针的值是很简单的
当使用其他类型的变量(例如对象)时,需要有一些机制,以便编译器知道每个对象有多大。这引入了各种不同语言和编译器的限制。指针没有这样的问题

  • 它们的大小也很小(通常为4或8字节),因此更新它们的值非常快
当您将指针用作指向潜在大量信息的标记时,这非常有用。举个例子:我们有一本画有画的书。你需要给我描述一幅画,这样我才能在书中找到它。你可以坐下来画一份精确的副本,给我看,让我在书中搜索它;或者你可以告诉我“在第25页”。这就像使用指针一样,而且速度要快得多

  • 它们可以用来实现多态性,多态性是面向对象编程的基础之一

因此,要了解如何使用指针:查找这些属性可以派上用场的情况。:)

操作员的更好名称是“操作员地址”。因为它返回操作数的地址

<>在C++中,当处理动态分配的内存或使用指针运算时,将使用指针(以及引用/引用引用运算符)。 指针还用于分解静态绑定,因为它们意味着动态绑定(通过指针中存储的地址,地址可以动态更改)


对于所有其他用途,通常使用引用代替指针。

程序员在跳入指针和C++引用之前需要了解的一些事情。

首先,您必须了解程序是如何工作的。当你写变量的时候,当你写语句的时候,你需要理解在较低的层次上发生了什么;从计算机的角度了解发生了什么是很重要的

本质上,当您执行程序时,它将成为内存(进程)中的数据。在这一点上,您必须有一个简单的方法来引用数据点-我们称这些变量为。你可以从内存(计算机内存)中存储和读取东西

现在想象一下,必须将一些数据传递给一个函数—您希望这个函数操作这些数据—您可以通过传递整个数据集来完成,也可以通过传递其地址(数据在内存中的位置)来完成。函数真正需要的只是这个数据的地址,它不需要整个数据本身

所以指针正是用于这类任务的——当您需要传递数据的地址时——指针实际上只是包含地址的常规变量

C++使用引用(int&var)使事情变得更简单,但概念是一样的。它允许您跳过创建指针以存储某些数据的地址的步骤,并在将数据传递给函数时自动完成所有操作

这只是对它们工作原理的简单介绍-你应该在谷歌上阅读,以搜索更详细的资源,以及你可以使用指针/引用做的所有很酷的事情。

简而言之: 引用是从C继承到C++的指针的一些改进 它更安全一些,因为它可以帮助您避免在函数中使用“*”,从而减少分段错误。 或者像我的朋友说的“避免星球大战”

有很多东西要学

查找“&”用于通过引用发送和接收值 了解使用“&”获取变量地址


这是一个非常大的问题,如果你能更具体一些,它会更好。

“因为它返回操作数的地址。”->技术上不正确,标准明确地说“一元
&
运算符的结果是指向其操作数的指针。”。是的,这肯定是一个很好的答案。帮助我更好地理解了指针,但我仍然不知道如何实际有效地使用它们。更新了答案,请查看。谢谢,非常有用。还有其他常见用法和优化的例子吗?这是一个太宽泛的问题,在这里无法充分回答。我建议你继续阅读你的书/教程或者你正在学习的任何C++材料,因为它们经常解释和提供例子。在其他地方阅读会有所帮助,但同样,这一点似乎过于宽泛,无法在这里得到回答,很可能会作为一个问题结束。有人能把这个标记为关闭吗。我认为大约有150个问题是完全相同的。再试试互联网吧,它们似乎有无数关于指针和延迟的信息……你所说的“引用操作符”到底是什么意思?你是说类似于中的
int¶m
in