C++參數傳遞的三種方式

通常來講C++中參數傳遞有三種方式:值傳遞、指針傳遞、引用傳遞ios

1.值傳遞——傳值函數

值傳遞是最多見的一種參數傳遞的方式,可是對初學者來講也最容易出錯。以下例:spa

#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.指針傳遞——傳指針code

使用指針傳遞須要先了解一下指針的有關概念,由於這裏主要介紹關於參數的部分,因此廢話很少說了,直接看例子:blog

#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。ip

3.引用傳遞——傳引用內存

引用至關於別名(綽號),比方說有人的名字是王小麗,她的綽號是「小小」。若是有人說「小小」幾歲,實際上就是指王小麗幾歲。io

#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。
比較:class

       對比參數的三種傳遞方式,能夠發現「引用傳遞」和「指針傳遞」的性質同樣,而書寫方式像「值傳遞」。引用傳遞能夠作的任何事指針也可以作到,由於指針可以毫無約束地操做內存中的東西,這種強大的功能背後也必將隱藏着巨大的危險,因此慎用指針。

相關文章
相關標籤/搜索