c++ 编程练习 002:难一点的swap

描述

填空,使得程序输出结果是:

5,3

#include <iostream>
using namespace std;

void swap(
)
{
	int * tmp = a;
	a = b;
	b = tmp;
}
int main()
{
	int a = 3,b = 5;
	int * pa = & a;
	int * pb = & b;
	swap(pa,pb);
	cout << *pa << "," << * pb;
	return 0;
}

输入

输出
5,3

样例输入

样例输出
5,3

来源
Guo Wei


分析

此处如果单纯的只传入void swap(int *a,int *b)那么我们会发现其实两个值在输出时,并没有发生交换,这是因为在子函数中,如果我们不改变指针指向得值,那么即使改变指针得指向也不会影响原函数得值。因此,此处最好将主函数中传过来得地址进行强行转换,如void swap(int *(&a),int *(&b)),那么a和b就是pa和pb的地址了,相当于就是pa和pb,完全一样,可以进行交换指针了。


void swap(int *(&a),int *(&b))

在这里插入图片描述

发布了196 篇原创文章 · 获赞 47 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44116998/article/details/104354606