问题标签 [pass-by-reference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
17 回答
199179 浏览

php - PHP 变量是按值传递还是按引用传递?

PHP 变量是按值传递还是按引用传递?

0 投票
11 回答
18166 浏览

language-agnostic - 通过引用传递还是通过值传递?

在学习一种新的编程语言时,您可能会遇到的一个可能的障碍是该语言是默认情况下是按值传递还是按引用传递

所以这是我向你们所有人提出的问题,用你们最喜欢的语言,它实际上是如何完成的?可能的陷阱是什么?

当然,您最喜欢的语言可以是您曾经玩过的任何语言:流行的晦涩的深奥的、的、旧的……

0 投票
92 回答
2379480 浏览

java - Java 是“按引用传递”还是“按值传递”?

我一直认为 Java 使用pass-by-reference

但是,我看到一篇博客文章声称 Java 使用pass-by-value

我不认为我理解他们所做的区分。

解释是什么?

0 投票
10 回答
843 浏览

c++ - 为什么我的引用传递的参数没有在函数内修改?

我在静态库中有一个 C 函数,我们称它为 A,具有以下接口:

这个函数将改变 y 和 z 的值(这是肯定的)。我在动态 C++ 库中使用它,使用 extern "C"。

现在,这让我感到震惊:

  • y 设置正确,z 没有改变。我的意思是,如果两者都使用(指向)值 666 进行初始化,则 y 指向的值将在调用后发生变化,但不会更改 z 指向的值(仍为 666)。
  • 当从 C 二进制文件调用时,此函数可以无缝工作(修改 z 指向的值)。
  • 如果我创建一个具有相同原型的函数的虚拟 C 库,并在我的动态 C++ 库中使用它,它工作得很好。如果我重新使用相同的变量来调用 A(..),我会得到与以前相同的结果,z 不会改变。

我认为以上几点表明我的变量声明并不是一个愚蠢的错误。

我显然被卡住了,我无法更改 C 库。您对可能是什么问题有任何线索吗?我正在考虑 C/C++ 接口上的一个问题,例如 char* 的解释方式。

编辑:我终于发现了问题所在。请看下面我的回答。

0 投票
6 回答
24184 浏览

ruby - Ruby中的“通过引用传递参数”?

在 Ruby 中,是否可以通过引用传递具有值类型语义的参数(例如 Fixnum)?我正在寻找类似于 C# 的 ' ref ' 关键字的东西。

例子:

顺便提一句。我知道我可以使用:

0 投票
9 回答
33831 浏览

php - 在 PHP (>= 5.0) 中,通过引用传递是否更快?

在 PHP 中,函数参数可以通过在函数声明中的参数前加上一个 & 符号来通过引用传递,如下所示:

现在,我知道这不是为了提高性能而设计的,而是为了允许函数更改通常超出其范围的变量。

相反,PHP 似乎使用 Copy On Write 来避免复制对象(可能还有数组),直到它们被更改。因此,对于不更改其参数的函数,其效果应该与您通过引用传递它们一样。

但是,我想知道 Copy On Write 逻辑是否可能在传递引用时短路,以及这是否会对性能产生任何影响。

ETA:可以肯定的是,我认为它不会更快,而且我很清楚这不是引用的用途。所以我认为我自己的猜测非常好,我只是在寻找一个真正知道幕后肯定发生了什么的人的答案。在 PHP 开发的五年中,我总是发现很难通过阅读源代码来获得有关 PHP 内部结构的优质信息。

0 投票
3 回答
46486 浏览

.net - 在 C++/CLI 中,如何声明和调用带有“out”参数的函数?

我有一个函数可以将一个字符串解析为两个字符串。在 C# 中,我会这样声明:

我会这样称呼它:

当前项目必须在 C++/CLI 中完成。我试过了

但如果我这样称呼它:

我得到一个编译器错误,如果我这样称呼它:

然后我在运行时遇到错误。我应该如何声明和调用我的函数?

0 投票
10 回答
173741 浏览

c# - 为什么在传递对象时使用 'ref' 关键字?

如果我将对象传递给方法,为什么要使用 ref 关键字?这不是默认行为吗?

例如:

输出是“Bar”,这意味着该对象是作为引用传递的。

0 投票
5 回答
2124 浏览

php - 如何在 PHP 中的数组中使用数组引用?

我希望能够做到以下几点:

问候

/R

0 投票
11 回答
111610 浏览

c++ - 在 C++ 中通过值传递还是通过常量引用传递更好?

在 C++ 中通过值传递还是通过常量引用传递更好?

我想知道哪个是更好的做法。我意识到通过常量引用传递应该在程序中提供更好的性能,因为您没有制作变量的副本。