首页 > 编程语言 > 详细

C++:传值与传地址

时间:2014-02-19 22:48:08      阅读:588      评论:0      收藏:0      [点我收藏+]

    参数的传递方式有两种:传值和传地址。

  

    传值

传值方式是将实参的值复制到形参中,因此实参和形参是两个不同的变量,各有各的存储空间,函数形参可以看做是函数的局部变量。如图:

bubuko.com,布布扣

传值的最大好处就是函数调用不会改变调用函数实参变量的内容,因为当实参的值传递给形参后,所进行的运算都是围绕形参进行的,没有实参的参与,所以,不会影响到实参的值,避免了一些不必要的副作用。


例如:

#include<iostream>
using namespace std;
void test(int);

int main()
{
	int a;
	a=1;

	test(a);
	cout<<"a="<<a<<endl;

	return 0;
}

void test(int i)
{
	i++;
	cout<<"i="<<i<<endl;
}


执行结果:



bubuko.com,布布扣


从结果可以看出,在调用过程中,当把实参a=1赋给了形参i后,i自加1,输出i=2;但是实际上并没有影响到实参a的值,调用完成之后,a的值还是1.




传地址


bubuko.com,布布扣


      学过二代语言的人可能都接触过对寄存器的操作,在一些底层的语言中,对数据的读取操作中,有很大一部分是直接对地址中的数据来读写的,在高级语言中传递址的方式来传递参数虽然是通过指针引用这些实现的,但是原理感觉还是通过数据的地址对数据进行操作的,这种操作时对数据的直接操作。

  例如:

 

		#include<iostream>
		using namespace std;
		void test(int * i);
		
		int main()
		{
			int a;
			a=1;
		
			test(&a);
			cout<<"a="<<a<<endl;
		
			return 0;
		}
		
		void test(int * i)
		{
			(* i)++;
			cout<<"i="<<(* i)<<endl;
		}

执行结果:

  bubuko.com,布布扣

其中,将形参i定义成指针类型,在使用时,指向a的内容,当调用test时,直接了改变a的值。




C++:传值与传地址

原文:http://blog.csdn.net/lhc1105/article/details/19480225

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!