1.值传递是只把对象的值传入函数,函数中可以使用这个值,但却无法更改该对象的值。
{
void a(int v) {
printf(v);
v++;
printf(v);
}
void main() {
int b = 0;
a(b);
printf(b);
}
}
输出结果为010,这里b的值进入函数之后,再进入main中并没有发生改变,这里b的值在a函数中被调用,但是b本身没变,其实值传递相当于在函数中新建了一个对象然后对它赋值再使用。
2.引用传递是将整个对象本身(或地址)传入函数,在函数中既可调用对象的值,也可改变对象的值。
void a(int* v) //传入的参数为指针
{
printf(*v);
*v++;
printf(*v);
}
void main()
{
int b = 0;
a(&b); //&的意思是取b的地址(指针)
printf(b);
}
运行结果为011;这里是将b本身,(地址)传入函数,在函数中既可以调用,也可以改变。