在使用函数时,所有的实参都是通过“传值”方式传递的。这意味着每个实参都被求值,求值结果代替对应的形式参数,并且在函数中作为局部变量使用。如果一个变量传递给一个函数,这个变量在调用环境中所存储的值并不会被函数所修改。
#include <stdio.h>
int compute_sum(int n);
int main(void)
{
int n=3,sum;
printf("%d\n",n); /* 3 is printed */
sum= compute_sum(n);
printf("%d\n",n); /* 3 is printed */
printf("%d\n",sum); /* 6 is printed */
return 0;
}
int compute_sum(int n) /* sum the integers from 1 to n */
{ //sum从整数1加到n
int sum=0;
for(;n>0;--n) /* stored value of n is changed */
sum+=n; // 所存储n的值被改变了
return sum;
}
尽管n被传递给compute_sum(),并且n的值在这个函数中被修改,但调用环境中n的值仍然保持不变。被传递的是n的值,而不是n本身。