1、值傳遞
當進行值傳遞時,就是将實參的值複制到形參中,而實參和形參不是在同一個存儲單元,是以函數調用結束後,實參的值不會發生改變。
#include<iostream>
using namespace std;
void swap(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
cout<<a<<","<<b<<endl;
}
int main()
{
int x=;
int y=;
swap(x,y);
cout<<x<<","<<y<<endl;
return ;
}
//程式的輸出結果為
//2,1
//1,2
2、指針傳遞
當進行指針傳遞時,形參是指針變量,實參是一個變量的位址,調用函數時,形參(指針變量)指向實參變量的單元,在函數中改變的不是實參的值,而是實參位址所指向的變量的值。
#include<iostream>
using namespace std;
void swap(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
cout<<*a<<","<<*b<<endl;
}
int main()
{
int x=;
int y=;
swap(&x,&y);
cout<<x<<","<<y<<endl;
return ;
}
//程式的輸出結果為
//2,1
//2,1
3、傳引用
實參位址傳遞給形參,使形參的位址取實參的位址,進而使形參與實參共享同一單元的方式。
#include<iostream>
using namespace std;
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
cout<<*a<<","<<*b<<endl;
}
int main()
{
int x=;
int y=;
swap(x,y);
cout<<x<<","<<y<<endl;
return ;
}
//程式的輸出結果為
//2,1
//2,1
4、全局變量傳遞
這裡的“全局”變量并不見得就是真正的全局,隻要這個變量的作用域足夠這兩個函數通路就可以了,比如一個類中的兩個成員函數可以使用一個成員變量實作參數傳遞,或使用static關鍵字定義,或使用namespace進行限定等,而這裡的成員變量在這種意義下就可成為“全局”變量。當然也可以使用一個類外的真正的全局變量來實作參數傳遞。
全局變量傳遞的優點是效率高,但它對多線程的支援不好。