评估战略实例

时间:2010-06-03 02:55:49

标签: arrays

假设语言支持这些评估策略,那么通过引用调用,按名称调用和按值调用会产生什么结果?

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]);

2 个答案:

答案 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(),则不会发生任何事情。如果你通过引用来调用它,它实际上会进行交换。

当函数的目标是返回值时传递值。

需要更新参数时按引用传递。