C++参数传递的三种方式

一般来说C++中参数传递有三种方式:值传递、指针传递、引用传递

1.值传递——传值

值传递是最常见的一种参数传递的方式,但是对初学者来说也最容易出错。如下例:

#include<iostream.h>
void fun(int a,int b)
{
	int temp;
	temp=a;
	a=b;
	b=temp;
}
void main()
{
	int m,n;
	m=1;
	n=2;
	fun(m,n);
	cout<<m<<""<<n<<endl;		//输出结果为 12
}

例子中fun()函数采用值传递的方式,传入的实参实际上是m、n的副本而非其本身,所以对副本的改变并不会反映到m、n本身上。

2.指针传递——传指针

使用指针传递需要先了解一下指针的有关概念,因为这里主要介绍关于参数的部分,所以废话不多说了,直接看例子:

#include<iostream.h>
void fun(int * x)
{
	*x+=10;
}
void main()
{
	int n=0;
	fun(&n);
	cout<<n<<endl;		//输出结果为 10
}

fun()函数体内的x是指向外部变量n的指针,改变指针的内容将导致n的值得改变,所以n的值成为了10。

3.引用传递——传引用

引用相当于别名(绰号),比方说有人的名字是王小丽,她的绰号是“小小”。如果有人说“小小”几岁,实际上就是指王小丽几岁。

#include <iostream.h>
void main()
{
	int x;
	int &y=x;	//变量引用
	y=99;
	cout<<"x="<<x<<endl;	//输出结果为 x=99
}

程序中&y=x应当理解为y具有x的地址,即x与y具有相同的地址,地址相同了当然内容也相同了,所以y的值是99。
比较:

       对比参数的三种传递方式,可以发现“引用传递”和“指针传递”的性质一样,而书写方式像“值传递”。引用传递可以做的任何事指针也能够做到,因为指针能够毫无约束地操作内存中的东西,这种强大的功能背后也必将隐藏着巨大的危险,所以慎用指针。

 

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值