C++传参方式
分类
- 值传递
- 指针传递
- 引用传递
区别
值传递:不会修改实参
指针传递:会修改实参
引用传递:会修改实参
C++传参方式
分类
- 值传递
- 指针传递
- 引用传递
区别
值传递:不会修改实参
指针传递:会修改实参
引用传递:会修改实参
注意点
不要使用局部变量进行参数传递。
-
局部变量的生命周期在函数结束后被系统自动回收
-
可能返回的局部变量第一次使用的时候是想要的值,但是第二次之后就会发生错误,因为编译器会临时保留,但不是永远保留。
示例
#include <cstdio>
#include <iostream>
using namespace std;
void MySwapFunc1(int a, int b)
{
int temp = a;
a = b;
b = temp;
cout << "值传递方式——函数中: " << "a = " << a << endl;
cout << "值传递方式——函数中: " << "b = " << b << endl;
}
void MySwapFunc2(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
cout << "地址传递方式——函数中: " << "a = " << *a << endl;
cout << "地址传递方式——函数中: " << "b = " << *b << endl;
}
void MySwapFunc3(int &a, int &b)
{
int temp = a;
a = b;
b = temp;
cout << "引用传递方式——函数中: " << "a = " << a << endl;
cout << "引用传递方式——函数中: " << "b = " << b << endl;
}
int main()
{
int a = 10;
int b = 20;
cout << "原始的数据: " << "a = " << a << endl;
cout << "原始的数据: " << "b = " << b << endl << endl;
MySwapFunc1(a, b);
cout << "值传递方式——main函数中结果: " << "a = " << a << endl;
cout << "值传递方式——main函数中结果: " << "b = " << b << endl << endl;
MySwapFunc2(&a, &b);
cout << "地址传递方式——main函数中结果: " << "a = " << a << endl;
cout << "地址传递方式——main函数中结果: " << "b = " << b << endl << endl;
MySwapFunc3(a, b);
cout << "引用传递方式——main函数中结果: " << "a = " << a << endl;
cout << "引用传递方式——main函数中结果: " << "b = " << b << endl << endl;
return 0;
}