傳值呼叫
傳值呼叫就是在呼叫函數時,將函數所需的資料值傳入。編譯器遇到呼叫函數時,就把呼叫函數時所傳入的資料複製一份,供函數使用,因此,呼叫函數時的原始參數(變數)內容不會被更改。
範例:
//函數的傳值呼叫範例
#include
<iostream.h>
int sum(int , int, int) ;
//函數原型宣告
void main()
//主程式開始
{
int ourstart = 10, ourend = 1, ournumber = 1;
cout << "起始值:" << ourstart << " 終值為:" ;
cout << ourend << " 等差:" <<
ournumber << endl; //輸出各變數
//呼叫函數
cout << "1加到10為: " <<
sum(ourstart, ourend, ournumber) << " .\n";
cout << "起始值:" << ourstart << " 終值為:" ;
cout << ourend << " 等差:" << ournumber << endl; //輸出各變數
} //主程式結束int sum(int start, int end, int number) //宣告函數的傳回值、名稱及傳入參數
{
int n, temp, total = 0; //函數內使用變數的宣告
if (end < start)
{ //檢查傳入的計算上界是否大於下界
//若下界大於下界,則將兩個值互換
temp = end;
end = start;
start = temp;
}
n = (end - start) / number + 1; //計算項數
total = (end + start) * n / 2; //利用公式計算總和
return total;
//傳回計算結果
} //函數結束 |
傳址呼叫
傳址呼叫會把原始參數(變數)的位址傳入函數,因此函數型式必須宣告成指標型態來儲存呼叫程式所傳入的位址值。所以,呼叫函數時的原始參數(變數)內容將會被更改。
範例:
//函數的傳址(call by
address)呼叫範例
#include <iostream.h>
int sum(int* , int*, int) ; //函數原型宣告void main() //主程式開始
{
int ourstart = 10,
ourend = 1, ournumber = 1;
cout << "起始值:" << ourstart
<< " 終值為:" ;
cout << ourend << " 等差:" << ournumber << endl; //輸出各變數
cout << "1加到10為: " << sum(&ourstart, &ourend,
ournumber) << " .\n"; //呼叫函數,傳出位址
cout << "起始值:" << ourstart
<< " 終值為:" ;
cout << ourend << " 等差:" << ournumber << endl; //輸出各變數
} //主程式結束
int sum(int *start, int *end, int number) //宣告函數的傳回值、名稱及傳入參數
{
int n, temp, total = 0; //函數內使用變數的宣告
if (*end < *start)
{ //檢查傳入的計算上界是否大於下界
//若下界大於下界,則將兩個值互換
temp = *end;
*end = *start;
*start =
temp;
}
n = (*end - *start) / number + 1; //計算項數
total = (*end + *start) * n / 2; //利用公式計算總和
return
total; //傳回計算結果
} //函數結束 |
傳參考呼叫
傳參考呼叫必須使用&取址運算子,將函數的參數須告為參考型式。所以,呼叫函數時的原始參數(變數)內容也會被更改。
範例:
//函數的傳參考(call by
reference)呼叫範例
#include
<iostream.h>
int sum(int& , int&, int) ; //函數原型宣告
void main()
//主程式開始
{
int ourstart
= 10, ourend = 1, ournumber = 1;
cout << "起始值:" << ourstart << " 終值為:" ;
cout << ourend << " 等差:" << ournumber << endl; //輸出各變數
cout << "1加到10為: " <<
sum(ourstart, ourend, ournumber) << " .\n"; //呼叫函數,傳出位址
cout << "起始值:" << ourstart
<< " 終值為:" ;
cout << ourend << " 等差:" << ournumber << endl; //輸出各變數
} //主程式結束
int sum(int &start, int &end, int number) //宣告函數的傳回值、名稱及傳入參數
{
int n,
temp, total = 0; //函數內使用變數的宣告
if (end
< start)
{ //檢查傳入的計算上界是否大於下界
//若下界大於下界,則將兩個值互換
temp = end;
end = start;
start = temp;
}
n = (end - start) / number + 1; //計算項數
total = (end + start) * n / 2; //利用公式計算總和
return
total; //傳回計算結果
} //函數結束 |
|