一、非引用形參
void add1(int v1)
{
v1+=1;
}
這是最普通的形參方式,當(dāng)函數(shù)被調(diào)用時(shí),實(shí)參的副本初始化形參,函數(shù)并沒有訪問(wèn)調(diào)用所傳遞的實(shí)參,因此v1+=1不會(huì)修改實(shí)參的值。對(duì)v1的操作只是修改了實(shí)參的一個(gè)副本。
二、指針形參
void add2(int *p)
{
*p+=1;
p+=1;
}
使用指針做為函數(shù)的形參,同樣指針的值(指針的地址)不會(huì)因?yàn)閜+=1而受到影響,但是指針指向的地址的值(*p)將會(huì)改變。所以要想修改實(shí)參的值,可以使用這種方法。但是還有一種更安全更自然的方法-引用形參
三、引用形參
void swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
引用形參直接關(guān)聯(lián)到其所綁定的對(duì)象,而非這些對(duì)象的副本。 所以這種方法可以修改實(shí)參的值,而且更加直觀。
三種方法實(shí)例代碼:
//liujiajia
//2008-7-14
#include<iostream>
using namespace std;
void add1(int);
void add2(int*);
void swap(int &,int &);
int main(void)
{
int n=10;
cout<<"調(diào)用add1()之前n="<<n<<endl;
add1(n);
cout<<"調(diào)用add1()之后n="<<n<<endl;
int *p=&n;
cout<<"調(diào)用add2()之前n="<<n<<",p="<<p<<endl;
add2(p);
cout<<"調(diào)用add2()之后n="<<n<<",p="<<p<<endl;
int a=1,b=2;
cout<<"調(diào)用swap()之前a="<<a<<",b="<<b<<endl;
swap(a,b);
cout<<"調(diào)用swap()之后a="<<a<<",b="<<b<<endl;
getchar();
}
//非引用形參
void add1(int v1)
{
v1+=1;
}
//指針形參
void add2(int *p)
{
*p+=1;
p+=1;
}
//引用形參
void swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}