假设语言支持这些评估策略,那么通过引用调用,按名称调用和按值调用会产生什么结果?
void swap(int a; int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
int i = 3;
int A[5];
A[3] = 4;
swap (i, A[3]);
答案 0 :(得分:1)
按值调用
- 调用方法后,在swap方法中完成的更改不可见。
即。在swap (i, A[3])
;
i, A[3]
值不会更改。
来电参考
调用方法后,在swap方法中完成的更改是可见的。
即。在swap (i, A[3])
;
i, A[3]
值被交换。
如果您使用C ++作为语言,则应更改方法的签名以反映通过引用传递:
void swap(int& a, int& b)
{
int temp;
temp = a;
a = b;
b = temp;
}
答案 1 :(得分:0)
如果按值调用swap(),则不会发生任何事情。如果你通过引用来调用它,它实际上会进行交换。
当函数的目标是返回值时传递值。
需要更新参数时按引用传递。