记录考软件评测师做题的疑问与解惑,也算查漏补缺大学里没掌握的。。。
传值与传引用
传值:值进行传递
传引用:存储地址进行传递
例题举例:函数t()和f()的定义如下所示。若调用函数t()时传递给x的值为3,并且调用函数f()时,第一个参数采用传值(call by value)方式,第二个参数采用传引用(call by reference)方式,则函数t()的返回值为 。
t(int x)
int a; |
a=3*x-1; |
f(x,a); |
return a+x; |
f(int r,int s)
int x; |
x=2*r+1;s=x*r; |
r=s-x; |
return; |
答案:24
解析:x是传值,a是传引用;因此,x=3,a=21。传引用会影响原变量的值,而传值不会。x只是把3这个值传过去了,a是把存储8的地址传过去了,所以对s的所有操作都会影响变量a指向的地址中的值,而对r的操作不影响x指向的地址中的值。
x跟r虽然值都是3,但是指向的地址不同;a跟s指向的是同一个地址
举例子,就是现在有两张纸,一张纸上写着3,一张纸上写着8。传值就是,x复印一份给r,r做的所有计算都是在自己的这张纸上;而,a直接把自己这张纸给s,这样s做的所有计算都是在a的纸上。