我有这个问题,我对打印的内容有点困惑,特别是对于按引用传递的内容。如果有两个参数,传递给x的值是什么?谢谢!
考虑下面的程序。对于以下每种参数传递方法,打印什么内容?
a.通过值传递
b.通过引用传递
c.通过value-result传递
void main()
{
int x = 5;
foo (x,x);
print (x);
}
void foo (int a, int b)
{
a = 2 * b + 1;
b = a - 1;
a = 3 * a - b;
}发布于 2014-07-23 08:59:07
前两个应该非常简单,后一个可能会让你大吃一惊,因为它不是真正的C++支持的构造。这是不久前在Fortran和Ada中看到的东西。有关更多信息,请参阅this post
至于你的结果,我认为你会得到这样的结果:
1)
52)
x = 5,
a = 2 * 5 + 1 = 11
b = 11 - 1 = 10
a = 3 * 10 - 10 = 20; // remember, a and b are the same reference!
x = 203)考虑这一点(以C++样式)。我们将x复制到一个变量中,通过引用传递该变量,然后将结果复制回x:
void main()
{
int x = 5;
int copy = x;
foo (copy,copy); // copy is passed by reference here, for sake of argument
x = copy;
print (x);
}由于foo函数中没有任何内容直接与x一起使用,因此您的结果将与#2相同。
现在,如果我们在foo上有这样的东西
void foo (int a, int b)
{
a = 2 * b + 1;
x = a - 1; // we'll assume x is globally accessible
a = 3 * a - b;
}然后#2将产生相同的结果,但#3将如下所示:
a = 2 * 5 + 1 = 11
x = 11 - 1 = 10 // this no longer has any effect on the final result
a = 3 * 11 - 11 = 22
x = 22https://stackoverflow.com/questions/24900011
复制相似问题