在C++編程中是個較復雜的問題,這裡先不介紹。C++中的獨立函數可以和C語言中一樣使用,但C++將函數進一步深化,將在稍後介紹C++時介紹,希望本文能教會你更多東西。
如果將返回值忽略,則只是放棄這個值,而不會有別的危害。例如,前面的樣本程序中忽略了getch()函數的返回值返回所按鍵的ASCII值)。函數可以調用其它函數,甚至可以調用自己,這種調用稱為遞歸(recursion)。
函數是各種編程語言的重要部分,C++編程也不例外。最簡單的函數不帶參數,返回void表示不返回任何東西),其它函數可能帶一個或幾個參數並可能返回一個值。函數名規則與變量名相同。圖1.5顯示了函數的構成部分。新術語 參數(parameter)是傳遞給函數的值,用於改變操作或指示操作程度。
函數的構成部分使用函數前,要先進行聲明。函數聲明或原型(prototype)告訴編譯器函數所取的參數個數、每個參數的數據類型和函數返回值的數據類型。清單1.4列示了這個概念。新術語 原型(prototype)是函數外觀的聲明或其定義的說明。
- 1: #include <iostream.h>
- 2: #include <conio.h>
- 3: #pragma hdrstop
- 4:
- 5: int multiply(int,int)
- 6: void showResult(int);
- 7:
- 8:int main(int argc,char **argv);
- 9:{
- 10: int x,y,result;
- 11: cout << end1 << "Enter the first value:";
- 12: cin >> x;
- 13: cout << "Enter the second value: ";
- 14: cin >> y;
- 15: result=multiply(x,y);
- 16: showResult(result);
- 17: cout << end1 << end1 << "Press any key to continue...";
- 18: getch();
- 19: return 0
- 20: }
- 21:
- 22: int multiply(int x,int y)
- 23: {
- 24:return x * y;
- 25: }
- 26:
- 27: void showResult(int res)
- 28: {
- 29:cout << "The result is: " << res <<end1;
- 30: }
這個程序的11到14行用標准輸入流cin向用戶取兩個數字,第15行調用multiply()函數將兩個數相乘,第16行調用showResult()函數顯示相乘的結果。注意主程序前面第5和第6行multiply()和showResult()函數的原型聲明。原型中只列出了返回類型、函數名和函數參數的數據類型。這是函數聲明的最基本要求。
函數原型中還可以包含用於建檔函數功能的變量名。例如,multiply()函數的函數聲明可以寫成如下:int multiply(int firstNumber,int secondNumber);這裡函數multiply()的作用很明顯,但代碼既可通過說明也可通過代碼本身建檔。注意清單1.4中函數multiply()的定義(22到25行)在主函數定義碼段(8到20行)之外。
函數定義中包含實際的函數體。這裡的函數體是最基本的,因為函數只是將函數的兩個參數相乘並返回結果。清單1.4中函數multiply()可以用多種方法調用,可以傳遞變量、直接數或其它函數C++編程代碼:
- result = multiply(2,5);//passing literal values
- result = multiply(x,y); //passing variables
- showResult(multiply(x,y));
- //return value used as a
- //parameter for another function
- multiply(x,y);//return value ignored