概述
#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函数理解值传递、地址传递所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复