1、非飲用傳遞 例子:
int swap(int a,int b)
{
int temp = b;
b=a;
a=temp;
return a;
}
int num=swap(3,5);//num還是3,因爲非飲用傳遞只改變了函數體內部的值,實參的值未發生任何變化。所以swap()不起作用
2、指針形參 例子
void swap(int *a,int *b)
{
int temp = &b;
&b=&a;
&a=temp;
}
int i=3;int j=5;int *a=&i;int *b=&j;
swap(a,b);//則a和b指向的值發生了改變
3、飲用形參方法
void swap(int &a,int &b)
{
int temp = b;
b=a;
a=temp;;
}
int i=3;int j=5;swap(i,j);//結果i和j同樣進行了交換
4、傳遞指向指針的引用
void swap(int *&a,int *&b)
{
int *temp=b;
b=a;
a=temp;
}
int i=3;int j=5;int *a=&i;int *b=&j;
cout<<"before swap:"<<"*a:"<<*a<<"*b"<<*b<<endl;
swap(a,b);
cout<<"after swap:"<<"*a:"<<*a<<"*b"<<*b<<endl;
結果是,before是3,5;after後是5,3
//也就是說指針的值被交換了。而int *&a可以看做是一個int類型指針的別名