Chapter 4.3 參數傳遞 - TKU-ME-Lab/C-C-_tutorial GitHub Wiki
參數的傳遞
1.宣告函式所定義的參數,稱之為形式參數
2.呼叫函式傳入的參數稱之為實際參數
int sum(int value1,int value2) //(int value1,int value2)為形式參數
{
......
}
void main() //主程式開始
{
cout << "Sum is " << sum(1,100) << ".\n";
} //(1,100)為實際參數
3.參數傳遞有3種方法:
傳值呼叫(call by value)
呼叫函式時,將值傳入
int sum(int value1,int value2)
{ ...... }
void main() //主程式開始
{
cout << "Sum is " << sum(a,b) << ".\n";
//傳值呼叫
}
傳址呼叫(call by address)
呼叫函式時,將實際參數的位址傳入
int arith(int *value1,int *value2) //宣告函式,將形式參數宣告為指標型態
{ ...... } //函式結束
void main() //主程式開始
{
......
cout << "\nSum is " << arith(&a,&b) << ".\n";
//傳址呼叫,傳入變數的位址值
......
} //主程式結束
傳參考呼叫(call by reference)
呼叫函式時,格式是傳入實際參數的值,而真正動作是將實際參數的位址傳入
int arith(int &value1,int &value2) //宣告函式,將形式參數宣告為參考型態
{ ...... } //函式結束
void main() //主程式開始
{
......
cout << "\nSum is " << arith(a,b) << ".\n";
//傳參考呼叫,呼叫函式時,傳遞參數的方法與傳址呼叫相同
......
} //主程式結束
比較call by value與call by reference
call by value
函式的參數(a,b)與傳入的值(x1,x2)分別在不同的位址上
所以不論(a,b)如何被變更,均不會影響(x1,x2)的值
call by reference
函式的參數(a,b)與傳入的值(x1,x2)是在同一位址上
所以(a,b)被變更時,(x1,x2)的值均會變動