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