【发布时间】:2015-07-20 12:32:49
【问题描述】:
int f(float i, float j, float k)
{
float x=i;
i=j;
j=k;
k=x;}
main(){
float x=5; y=10 z=25;
if(...){
f(x,y,z);
}
else{
f(y,z,y); /* what's x,y,z after this line using call-by-reference and call-by-name mechanism*/
}
}
我想我对这三种传递机制已经很了解了。
在 f(x,y,z) 之后。 x,y,z 将具有价值
10 25 5 如果是引用调用
5 10 25 如果是按值调用
10 25 5 如果是按值调用结果。
(我仔细检查了答案,我确定这些是正确的)
但是我的回答对于 f(y,z,y) 是完全错误的。我得到了 10,25,10 的参考电话和姓名电话。如果使用按引用调用和按名称调用,x,y,z 的值在 f(y,z,y) 之后将如何变化
【问题讨论】:
-
本例中f的参数是传值的。
-
我不确定 C++ 中是否存在按值调用结果的机制。你是怎么检查的?
-
我做了一些修改。这是我考试中的一道题。所以我只是假设这些传递机制存在,看看参数将如何根据不同的传递机制而变化
标签: c++ pass-by-reference pass-by-value