当前位置: 首页 > 编程笔记 >

为什么我们在C ++中通过引用传递指针?

朱英范
2023-03-14
本文向大家介绍为什么我们在C ++中通过引用传递指针?,包括了为什么我们在C ++中通过引用传递指针?的使用技巧和注意事项,需要的朋友参考一下

如果需要修改指针而不是指针指向的对象,则可以按引用传递指针。

这是如何通过引用传递指针的示例-

示例

#include <iostream>
using namespace std;
void Decrement( int*& d ) {
   --d;
}
int main( void ) {
   int a = 26;
   int* ptr = &a; // pointer to pass
   //递减前打印
   cout<<"Before: "<< ptr << endl;
   Decrement( ptr);
   //增量后打印
   cout<<"After: " << ptr;
   return 0;
}

输出结果

Before: 0x6ffe3c
After: 0x6ffe38
 类似资料:
  • 问题内容: 该程序给出6作为输出,但是当我取消注释第9行时,输出为5。为什么?我认为ba不应更改,主要应保持5。 问题答案: 在Java中传递对象时,它们将作为in 方法中引用的参考含义对象和method 中的参数传递,它们都指向同一对象,因此,当您将值更改为6时,它将反映在方法中。 现在,当您尝试执行此操作时,您将指向另一个对象,但仍指向您在方法中创建的对象,因此更新的值6在main方法中不可见

  • 问题内容: 我已经阅读了每个原始数据类型和对象引用通过值传递的地方吗? 我曾尝试在Google中搜索为什么Java不支持按引用传递,但 我只得到Java不支持按引用传递, 而且 我找不到背后的任何原因 。 为什么不能通过引用传递原始数据类型? 编辑: 假定它是主观和争论的,大多数人都关闭了我的问题。 好吧,不是,它有一个明确的答案,我的问题就像你为什么不能创建抽象类的对象,并且它也不是重复的,因为

  • 问题内容: 为什么经常被称为 代替 ? W3,MDN和MSDN都声明它是可选的。此外,ActiveX控件似乎不需要参数: 这种做法至少可以追溯到2005年的Google Maps中 ,但被缩小了,没有任何解释: 问题答案: 如果您看一下XMLHttpRequest的旧规范,似乎W3C似乎并不需要在某一点上将该参数设为可选,这可能导致人们提供了一个明确的null值,以防万一。 (搜索“应支持发送”)

  • 我了解在lambda中捕获此(修改对象属性)的正确方法如下: 但我对我所看到的以下特点感到好奇: 我感到困惑(并希望得到回答)的奇怪之处在于,为什么以下方法有效: 以及为什么我无法通过引用明确捕获此内容:

  • 问题内容: 我有以下代码: 有人可以解释为什么输出是:零一二二。 摘自zend认证学习指南。 问题答案: 因为在第二个循环中,仍然是对最后一个数组项的引用,所以每次都将其覆盖。 您可以看到这样的内容: 如您所见,最后一个数组项采用当前循环值:“零”,“一个”,“两个”,然后就是“两个” …:)

  • 问题内容: 这两个代码有什么区别: 代码A: 哪里 VS. 代码B: 这两个代码之间有什么区别吗? 问题答案: Java始终按值传递参数,而不按引用传递参数。 让我通过一个例子解释一下: 我将逐步解释这一点: 声明一个名为ftype 的引用,Foo并将其分配给Foo具有属性的type的新对象”f”。 从方法方面,声明Foo具有名称的类型引用,a并将其初始分配给null。 调用方法时changeRe