我是靠谱客的博主 时尚小蝴蝶,最近开发中收集的这篇文章主要介绍利用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函数理解值传递、地址传递所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部