0
在通过引用传递参数的语言,给出以下功能:返回值是多少?
int function g(x, y) {
x = x + 1;
y = y + 2;
return x + y;
}
如果i = 3
,并且g(i,i)
之称,是返回值是什么?我以为是9
,这是正确的吗?
在通过引用传递参数的语言,给出以下功能:返回值是多少?
int function g(x, y) {
x = x + 1;
y = y + 2;
return x + y;
}
如果i = 3
,并且g(i,i)
之称,是返回值是什么?我以为是9
,这是正确的吗?
如果它是通过引用(你的原始问题是C但C没有传递引用,并且问题自那时起改变了,所以我将一般回答),可能是这种情况x
和y
将简单地修改为它们传入的变量。毕竟,这就是一个参考。
在这种情况下,他们都向的相同变量i
的引用,所以你的顺序可能是:
i = i + 1; // i becomes 4.
i = i + 2; // i becomes 6.
return i + i; // return i + i, or 12.
可以在操作与下面的C看到这个(使用指针来模拟通按引用):
pax$ cat qq.c
#include <stdio.h>
int g(int *x, int *y) {
*x = *x + 1;
*y = *y + 2;
return *x + *y;
}
int main (void) {
int i = 3;
int rv = g (&i, &i);
printf ("Returned: %d\n", rv);
return 0;
}
pax$ gcc -o qq qq.c ; ./qq
Returned: 12
你的9结果似乎s至被假设引用是不同于彼此,如在下面的代码:
#include <stdio.h>
int g(int *x, int *y) {
*x = *x + 1;
*y = *y + 2;
return *x + *y;
}
int main (void) {
int i1 = 3, i2 = 3;
int rv = g (&i1, &i2);
printf ("Returned: %d\n", rv);
return 0;
}
(这确实输出9),但是这不是通常与引用类型的情况。
这看起来像功课,请标记为这样。 – zellio
C没有引用,虽然这通常意味着“通过指针”,但在你的问题中没有。你能否包含一个实际的C函数,以便我们可以回答你的问题?在任何情况下,如果'x'和'y'确实指向相同的变量,'x + y'将始终为偶数,因为它相当于'2 * x'。 – GManNickG
删除C标签,因为C没有通过引用传递参数 – bdonlan