Parameters 按引用传递与按值传递结果
引用调用生成形式参数的别名,因此典型参数的每次更改都会影响形式参数,而传递值-结果会将结果复制到典型参数,当函数返回时,它会将典型参数复制到形式。(请注意,值调用结果与值调用结果完全不同) 除了这两种参数传递方法之间的实现差异之外,在我看来,最终结果是相同的Parameters 按引用传递与按值传递结果,parameters,parameter-passing,programming-languages,pass-by-reference,Parameters,Parameter Passing,Programming Languages,Pass By Reference,引用调用生成形式参数的别名,因此典型参数的每次更改都会影响形式参数,而传递值-结果会将结果复制到典型参数,当函数返回时,它会将典型参数复制到形式。(请注意,值调用结果与值调用结果完全不同) 除了这两种参数传递方法之间的实现差异之外,在我看来,最终结果是相同的 我的问题是,这两种方法是否总是给出相同的结果,或者你能举一个例子,说明这两种方法返回的结果不同吗?如果在方法过程中读取原始变量,结果会有所不同。这可能是因为: 使用相同的基础变量提供了两个参数 该方法调用了更多从原始变量读取的代码 涉及到
我的问题是,这两种方法是否总是给出相同的结果,或者你能举一个例子,说明这两种方法返回的结果不同吗?如果在方法过程中读取原始变量,结果会有所不同。这可能是因为:
- 使用相同的基础变量提供了两个参数
- 该方法调用了更多从原始变量读取的代码
- 涉及到其他线程
10
20
。。。因为当第二次调用
action()
时,p
的值已经更改为20。如果使用传递结果,p
的值只有在Foo
返回时才会更改。如果在方法过程中读取原始变量,则会产生差异。这可能是因为:
- 使用相同的基础变量提供了两个参数
- 该方法调用了更多从原始变量读取的代码
- 涉及到其他线程
10
20
。。。因为当第二次调用
action()
时,p
的值已经更改为20。如果使用传递结果,p
的值只有在Foo
返回时才会更改。我想您误解了传递值。实际上,传递值对形式参数没有任何影响。@M.Amini,传递值和值结果是完全不同的东西。@Henk Holterman,它用于fortran,您可以阅读它,也因此被称为“复制入复制出”。您还可以检查:,它被称为拷贝还原、拷贝入拷贝出或值返回。好吧,那是对的,因为我不懂Fortran。但这不是一般所说的传递值。你可能想更准确地解释这一点。@Henk Holterman,我也不懂fortran,我在大学的一节课上学习了参数传递(从值结果中有更多奇怪的方法),我想我很清楚,我问的是值结果,而不是值,这就是我在开始时更清楚地描述它的原因,另外,我在上面的评论中指出,它与按值调用不同……我认为您误解了按值传递。实际上,传递值对形式参数没有任何影响。@M.Amini,传递值和值结果是完全不同的东西。@Henk Holterman,它用于fortran,您可以阅读它,也因此被称为“复制入复制出”。您还可以检查:,它被称为拷贝还原、拷贝入拷贝出或值返回。好吧,那是对的,因为我不懂Fortran。但这不是一般所说的传递值。你可能想更准确地解释这一点。@Henk Holterman,我也不懂fortran,我在大学的一节课上学习了参数传递(从值结果中有更多奇怪的方法),我想我很清楚,我问的是值结果,而不是值,这就是我在开始时更清楚地描述它的原因,另外,我在上面的评论中指出,它不同于按值调用。。。