https://wenku.baidu.com/view/b7794a6b011ca300a6c3904a.htmlhtml
1、非引用形參
void add1(int v1)
{
v1+=1;
}
這是最普通的形參方式,當函數被調用時,實參的副本初始化形參,函數並無訪問調用所傳遞的實參,所以v1+=1不會修改實參的值。對v1的操做只是修改了實參的一個副本。
2、指針形參
void add2(int *p)
{
*p+=1;
p+=1;
}
使用指針作爲函數的形參,一樣指針的值(指針的地址)不會由於p+=1而受到影響,可是指針指向的地址的值(*p)將會改變。因此要想修改實參的值,能夠使用這種方法。可是還有一種更安全更天然的方法-引用形參
3、引用形參
void swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
引用形參直接關聯到其所綁定的對象,而非這些對象的副本。 因此這種方法能夠修改實參的值,並且更加直觀。
三種方法實例代碼:ios
//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;
}安全