项目二:分别编写三个函数完成两个数据的交换(例如,输入3、4,输出4、3)。对三个函数的要求为:分别使用值传递、引用传递和指针传递,实现实际参数到形式参数的传递。在主函数中分别调用三个函数,实现数据的交换,并
时间: 2023-11-22 07:54:34 浏览: 96
输出交换后的结果。
值传递方式实现数据交换:
```C++
#include <iostream>
using namespace std;
void swapByValue(int a, int b){
int temp = a;
a = b;
b = temp;
}
int main(){
int a = 3, b = 4;
cout << "Before swap: a = " << a << ", b = " << b << endl;
swapByValue(a, b);
cout << "After swap: a = " << a << ", b = " << b << endl;
return 0;
}
```
输出结果:
```
Before swap: a = 3, b = 4
After swap: a = 3, b = 4
```
我们发现,使用值传递方式实现数据交换并没有起到作用,因为在函数内部交换的是形参,而不是实参。
引用传递方式实现数据交换:
```C++
#include <iostream>
using namespace std;
void swapByReference(int& a, int& b){
int temp = a;
a = b;
b = temp;
}
int main(){
int a = 3, b = 4;
cout << "Before swap: a = " << a << ", b = " << b << endl;
swapByReference(a, b);
cout << "After swap: a = " << a << ", b = " << b << endl;
return 0;
}
```
输出结果:
```
Before swap: a = 3, b = 4
After swap: a = 4, b = 3
```
我们发现,使用引用传递方式实现数据交换成功了,因为在函数内部交换的是实参的值,而不是形参的值。
指针传递方式实现数据交换:
```C++
#include <iostream>
using namespace std;
void swapByPointer(int* a, int* b){
int temp = *a;
*a = *b;
*b = temp;
}
int main(){
int a = 3, b = 4;
cout << "Before swap: a = " << a << ", b = " << b << endl;
swapByPointer(&a, &b);
cout << "After swap: a = " << a << ", b = " << b << endl;
return 0;
}
```
输出结果:
```
Before swap: a = 3, b = 4
After swap: a = 4, b = 3
```
我们发现,使用指针传递方式实现数据交换也成功了,原理和引用传递方式类似,只不过使用的是指针。
阅读全文