C++函数地址传递和值传递区别
目录
1、地址传递VS值传递
地址传递:通过指针进行变量之间的传递,会改变实参
相当于通过寻找地址&传递,然后*解引用,修改变量的值。
void swap(int *p1, int *p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
swap(&a, &b);//调用
值传递:之间进行形参内部的值的改变,不会改变实参,只会影响形参。
相当于在函数内部做了赋值的操作。
void swap0(int a, int b) {
int temp = a;
a = b;
b = temp;
}
2、代码演示
#include<iostream>
using namespace std;
//指针和函数
//值传递:不会改变实参,只会影响形参
void swap0(int a, int b) {
int temp = a;
a = b;
b = temp;
cout << "a2=" << a << endl << "b2=" << b << endl;
}
//地址传递:会改变实参
void swap(int *p1, int *p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main() {
int a = 10;
int b = 20;
swap0(a, b);
cout << "a=" << a << endl << "b=" << b << endl;
swap(&a, &b);
cout << "a=" << a << endl << "b=" << b << endl;
system("pause");
return 0;
}
a2=20
b2=10
a=10
b=20
a=20
b=10
请按任意键继续. . .