c++ 中, 函数的参数的传递方式有三种: 值传递, 指针传递和引用传递.
1. "值传递" 的示例程序.
void fun1(int x){
x = x + 10;
}
执行片断:
int n = 0;
fun1(n);
cout << "n = " << n << endl; //n = 0
总结: 由于 fun1 函数体内的 x 是外部变量 n 的一份拷贝, 改变 x 的值不会影响 n, 所以 n 的值仍然是 0。
2. "指针传递" 的示例程序.
void fun2(int *x){
(*x) = (*x) + 10;
}
执行片段:
int n = 0;
fun2(&n);
cout << "n = " << n << endl; //n =10
总结: 由于fun2 函数体内的 x 是指向外部变量 n 的指针, 改变该指针的内容将导致 n 的值的改变, 所以 n 的值成为 10.
3. "引用传递" 的示例程序.
void fun3(int &x){
x = x + 10;
}
执行片段:
int n = 0;
fun3(n); //
cout << "n = " << n << endl; //n=10
总结: 由于fun3 函数体内的 x 是外部变量 n 的引用, x 和 n 是同一个东西, 改变 x 等于改变 n, 所以 n 的值成为10.
对比上面三个示例程序, 你会发现 "引用传递" 的性质象 "指针传递", 而书写方式象 "值传递".