问题标签 [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.
php - PHP 变量是按值传递还是按引用传递?
PHP 变量是按值传递还是按引用传递?
c++ - 为什么我的引用传递的参数没有在函数内修改?
我在静态库中有一个 C 函数,我们称它为 A,具有以下接口:
这个函数将改变 y 和 z 的值(这是肯定的)。我在动态 C++ 库中使用它,使用 extern "C"。
现在,这让我感到震惊:
- y 设置正确,z 没有改变。我的意思是,如果两者都使用(指向)值 666 进行初始化,则 y 指向的值将在调用后发生变化,但不会更改 z 指向的值(仍为 666)。
- 当从 C 二进制文件调用时,此函数可以无缝工作(修改 z 指向的值)。
- 如果我创建一个具有相同原型的函数的虚拟 C 库,并在我的动态 C++ 库中使用它,它工作得很好。如果我重新使用相同的变量来调用 A(..),我会得到与以前相同的结果,z 不会改变。
我认为以上几点表明我的变量声明并不是一个愚蠢的错误。
我显然被卡住了,我无法更改 C 库。您对可能是什么问题有任何线索吗?我正在考虑 C/C++ 接口上的一个问题,例如 char* 的解释方式。
编辑:我终于发现了问题所在。请看下面我的回答。
ruby - Ruby中的“通过引用传递参数”?
在 Ruby 中,是否可以通过引用传递具有值类型语义的参数(例如 Fixnum)?我正在寻找类似于 C# 的 ' ref ' 关键字的东西。
例子:
顺便提一句。我知道我可以使用:
php - 在 PHP (>= 5.0) 中,通过引用传递是否更快?
在 PHP 中,函数参数可以通过在函数声明中的参数前加上一个 & 符号来通过引用传递,如下所示:
现在,我知道这不是为了提高性能而设计的,而是为了允许函数更改通常超出其范围的变量。
相反,PHP 似乎使用 Copy On Write 来避免复制对象(可能还有数组),直到它们被更改。因此,对于不更改其参数的函数,其效果应该与您通过引用传递它们一样。
但是,我想知道 Copy On Write 逻辑是否可能在传递引用时短路,以及这是否会对性能产生任何影响。
ETA:可以肯定的是,我认为它不会更快,而且我很清楚这不是引用的用途。所以我认为我自己的猜测非常好,我只是在寻找一个真正知道幕后肯定发生了什么的人的答案。在 PHP 开发的五年中,我总是发现很难通过阅读源代码来获得有关 PHP 内部结构的优质信息。
.net - 在 C++/CLI 中,如何声明和调用带有“out”参数的函数?
我有一个函数可以将一个字符串解析为两个字符串。在 C# 中,我会这样声明:
我会这样称呼它:
当前项目必须在 C++/CLI 中完成。我试过了
但如果我这样称呼它:
我得到一个编译器错误,如果我这样称呼它:
然后我在运行时遇到错误。我应该如何声明和调用我的函数?
c# - 为什么在传递对象时使用 'ref' 关键字?
如果我将对象传递给方法,为什么要使用 ref 关键字?这不是默认行为吗?
例如:
输出是“Bar”,这意味着该对象是作为引用传递的。
php - 如何在 PHP 中的数组中使用数组引用?
我希望能够做到以下几点:
问候
/R
c++ - 在 C++ 中通过值传递还是通过常量引用传递更好?
在 C++ 中通过值传递还是通过常量引用传递更好?
我想知道哪个是更好的做法。我意识到通过常量引用传递应该在程序中提供更好的性能,因为您没有制作变量的副本。