我是靠谱客的博主 时尚小蝴蝶,这篇文章主要介绍利用swap函数理解值传递、地址传递,现在分享给大家,希望可以做个参考。

#include <iostream>
using namespace std;
int a = 1, b = 2;
void swap(int a, int b);
//pass by value
void swap(int a, int b)
{
	int temp;
	temp = a;
	a = b;
	b = temp;
	cout << "pass by value: a" << a << "   b" << b << endl;
}
void swap(int* a, int* b);
//pass by address
void swap(int* a, int* b)
{
	int temp;
	temp = *a;
	*a = *b;
	*b = temp;
	cout << "pass by address: a" << *a << "   b" << *b << endl;
}
void main()
{
	cout << "initial: a" << a << "   b" << b << endl;
	swap(a ,b);
	cout << "middle: a" << a << "   b" << b << endl;
	swap(&a, &b);
	cout << "final: a" << a << "   b" << b << endl;
}

执行结果:

据运行结果可看出:
值传递只是在局域中将两者的值交换,并没有改变全局变量ab的值。
而地址传递则是交换两变量的地址,交换完成后a和b在全局中的值也交换。

可以这样理解:
值传递传递的只是一个样本信息,令主函数按照传递的这个实参的样子来执行相应的操作,但原实参并没有发生改变也并没有被操作,即主函数仿照实参(样本)的样子又构造(或找到)了一个一模一样的数据,对这个非样本的数据进行操作
而地址传递则是主函数直接对传递过来的参数执行操作。

总结:值传递没有直接对原数据(传递过来的数据)进行处理。
传递过来的参数在值传递中只是一个样本,而在地址传递中则是实际操作对象。

最后

以上就是时尚小蝴蝶最近收集整理的关于利用swap函数理解值传递、地址传递的全部内容,更多相关利用swap函数理解值传递、地址传递内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(126)

评论列表共有 0 条评论

立即
投稿
返回
顶部