为什么调用swap1函数就不能实现交换两个值了而调用swap2就可以?
void swap1(int *pdata1, int *pdata2){
int temp = pdata2;
pdata2 = pdata1;
pdata1 = temp;
}
void swap2(int *pdata1, int *pdata2)
{
int temp = *pdata2;
*pdata2 = *pdata1;
*pdata1 = temp;
} swap1函数无法实现交换两个值的原因是,它只是交换了指针变量pdata1和pdata2的指向,并没有改变指针所指向的实际值。而swap2函数通过操作指针所指向的实际值,实现了值的交换。
具体来说,swap1函数中的临时变量temp只是一个指针,存储了pdata2的地址,然后将pdata2指向了pdata1,pdata1指向了temp。这样,虽然指针变量发生了改变,但是实际值并没有发生改变。
而swap2函数中通过操作指针所指向的实际值,将pdata2指向的值赋给了temp,pdata1指向的值赋给了pdata2,temp赋给了pdata1,这样就实现了值的交换。
以下是可以实现交换两个值的完整代码:
++
#include <iostream>
using namespace std;
void swap1(int *pdata1, int *pdata2)
{
int temp = *pdata2;
*pdata2 = *pdata1;
*pdata1 = temp;
}
int main()
{
int a = 10;
int b = 20;
cout << "交换前:" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
// 调用swap1函数交换a和b的值
swap1(&a, &b);
cout << "交换后:" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
return 0;
}
输出结果:
交换前:
a = 10
b = 20
交换后:
a = 20
b = 10
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]