当我们做值传递的时候,函数的形参发生变化,并不会影响实参;
void swap(int num1,int num2) {
int temp;
temp = num1;
num1 = num2;
num2 = temp;
}
int main() {
int a = 3, b = 5;
swap(a, b);
//当我们做值传递的时候,函数的形参发生变化,并不会影响实参
cout << "a=" << a << ",b=" << b;
//输出仍为a = 3, b = 5
system("pause");
return 0;
}
函数的地址传递:
当我们传地址时候,实参的值会发生改变;
void swap(int * p1, int * p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main() {
int a = 5, b = 10;
//int * p = &a;
//int * q = &b;
//swap(p, q);
//传地址作为形参
swap(&a, &b);
cout << "a=" << a << endl;
cout << "b=" << b;
system("pause");
return 0;
}
swap(a,b); //值传递不会改变实参
swap(&a,&b); //地址传递会改变实参
总结:如果不想修改实参,就用值传递,如果想修改实参,就用地址传递;


