學(xué)習(xí)C++函數(shù)時(shí)相關(guān)注意事宜
C++中的C++函數(shù)是數(shù)學(xué)中的一種對(duì)應(yīng)關(guān)系,是從非空數(shù)集A到實(shí)數(shù)集B的對(duì)應(yīng),簡(jiǎn)單地說,A隨著C變,那么A就是C的函數(shù),對(duì)應(yīng)法則和定義域是函數(shù)領(lǐng)域中的兩個(gè)主要要素。
C++函數(shù)是與主程序分開的碼段。這些碼段在程序中需要進(jìn)行特定動(dòng)作時(shí)調(diào)用(執(zhí)行)。例如,函數(shù)可能取兩個(gè)值并對(duì)其進(jìn)行復(fù)雜的數(shù)學(xué)運(yùn)算。
- 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:
然后返回結(jié)果,函數(shù)可能取一個(gè)字串進(jìn)行分析,然后返回分析字串的一部分。新術(shù)語 函數(shù)(function)是與主程序分開的碼段,進(jìn)行預(yù)定的一個(gè)服務(wù)。函數(shù)是各種編程語言的重要部分,C++也不例外。最簡(jiǎn)單的函數(shù)不帶參數(shù),返回void(表示不返回任何東西),其它函數(shù)可能帶一個(gè)或幾個(gè)參數(shù)并可能返回一個(gè)值。
函數(shù)名規(guī)則與變量名相同。圖1.5顯示了函數(shù)的構(gòu)成部分。新術(shù)語 參數(shù)(parameter)是傳遞給函數(shù)的值,用于改變操作或指示操作程度。 函數(shù)聲明或原型(prototype)告訴編譯器函數(shù)所取的參數(shù)個(gè)數(shù)、每個(gè)參數(shù)的數(shù)據(jù)類型和函數(shù)返回值的數(shù)據(jù)類型。
清單1.4列示了這個(gè)概念。新術(shù)語 原型(prototype)是函數(shù)外觀的聲明或其定義的說明。 這個(gè)程序的11到14行用標(biāo)準(zhǔn)輸入流cin向用戶取兩個(gè)數(shù)字,第15行調(diào)用multiply()函數(shù)將兩個(gè)數(shù)相乘,第16行調(diào)用showResult()函數(shù)顯示相乘的結(jié)果。
注意主程序前面第5和第6行multiply()和showResult()函數(shù)的原型聲明。原型中只列出了返回類型、函數(shù)名和函數(shù)參數(shù)的數(shù)據(jù)類型。這是函數(shù)聲明的最基本要求。函數(shù)原型中還可以包含用于建檔函數(shù)功能的變量名。
multiply()函數(shù)的函數(shù)聲明可以寫成如下:int multiply(int firstNumber,int secondNumber);這里函數(shù)multiply()的作用很明顯,但代碼既可通過說明也可通過代碼本身建檔。注意清單1.4中函數(shù)multiply()的定義(22到25行)在主函數(shù)定義碼段(8到20行)之外。
函數(shù)定義中包含實(shí)際的C++函數(shù)體。這里的函數(shù)體是最基本的,因?yàn)楹瘮?shù)只是將函數(shù)的兩個(gè)參數(shù)相乘并返回結(jié)果。清單1.4中函數(shù)multiply()可以用多種方法調(diào)用,可以傳遞變量、直接數(shù)或其它函數(shù)調(diào)用的結(jié)果:#t#
注意 最后一例中沒有使用返回值。本例中調(diào)用函數(shù)multiply()而不用返回值沒什么道理,但C++編程中經(jīng)常忽略返回值。有許多函數(shù)是先進(jìn)行特定動(dòng)作再返回一個(gè)數(shù)值,表示函數(shù)調(diào)用的狀態(tài)。有時(shí)返回值與程序無關(guān),可以忽略不計(jì)。
如果將返回值忽略,則只是放棄這個(gè)值,而不會(huì)有別的危害。例如,前面的樣本程序中忽略了getch()函數(shù)的返回值(返回所按鍵的ASCII值)。函數(shù)可以調(diào)用其它函數(shù),甚至可以調(diào)用自己,這種調(diào)用稱為遞歸(recursion)。
這在C++編程中是個(gè)較復(fù)雜的問題,這里先不介紹。新術(shù)語 遞歸(recursion)就是函數(shù)調(diào)用自己的過程。本節(jié)介紹的函數(shù)指的是C或C++程序中的獨(dú)立函數(shù)(獨(dú)立函數(shù)不是類的成員)。C++中的獨(dú)立函數(shù)可以和C語言中一樣使用,但C++函數(shù)進(jìn)一步深化,將在稍后介紹C++時(shí)介紹。