在本文中,您將學習有關C ++中函數(shù)的所有知識。有哪些類型的函數(shù),如何在示例中使用它們。
在編程中,函數(shù)是指將代碼分組以執(zhí)行特定任務的代碼塊。
取決于函數(shù)是預定義的還是由程序員創(chuàng)建的;函數(shù)有兩種類型:
標準庫函數(shù)
用戶定義函數(shù)
庫函數(shù)是C ++編程中的內(nèi)置函數(shù)。
程序員可以通過直接調(diào)用函數(shù)來使用庫函數(shù);他們不需要自己編寫。
#include <iostream> #include <cmath> using namespace std; int main() { double number, squareRoot; cout << "輸入一個數(shù)字: "; cin >> number; // sqrt()是一個用于計算平方根的庫函數(shù) squareRoot = sqrt(number); cout << "數(shù)字 " << number << " 的平方根= " << squareRoot; return 0; }
輸出結(jié)果
輸入一個數(shù)字: 26 數(shù)字 26 的平方根 = 5.09902
在上面的示例中,調(diào)用sqrt()庫函數(shù)來計算數(shù)字26的平方根。
上述程序中的注意代碼#include <cmath>。 在這里cmath是頭文件。sqrt()函數(shù)定義在cmath頭文件中。
當您使用#include <cmath>將文件cmath的內(nèi)容包含到這個程序中時,您可以使用cmath中定義的所有函數(shù)。
每個有效的C ++程序至少具有一個函數(shù),即main()函數(shù)。
C ++允許程序員定義自己的函數(shù)。
用戶定義的函數(shù)將執(zhí)行特定任務的代碼分組,并為該組代碼指定名稱(標識符)。
從程序的任何部分調(diào)用該函數(shù)時,它們都將執(zhí)行函數(shù)主體中定義的代碼。
根據(jù)上圖。
當程序開始運行時,系統(tǒng)將調(diào)用main()函數(shù),即程序開始運行時從main()函數(shù)執(zhí)行代碼。
當程序的控制權到達main()內(nèi)部的function_name()時,它將移至void function_name()并執(zhí)行void function_name()內(nèi)部的所有代碼。
然后,程序的控制返回到主函數(shù),在該函數(shù)中,如上圖所示,執(zhí)行了對function_name()的調(diào)用之后的代碼。
C ++程序?qū)蓚€整數(shù)相加。創(chuàng)建一個函數(shù)add()以添加整數(shù)并在main()函數(shù)中顯示sum。
#include <iostream> using namespace std; // 函數(shù)原型(聲明) int add(int, int); int main() { int num1, num2, sum; cout<<"輸入兩個要相加的數(shù)字: "; cin >> num1 >> num2; // 調(diào)用函數(shù) sum = add(num1, num2); cout << "總和 = " << sum; return 0; } // 函數(shù)定義 int add(int a, int b) { int add; add = a + b; // 返回語句 return add; }
輸出結(jié)果
輸入兩個要相加的數(shù)字: 8 -4 總和 = 4
如果在main()函數(shù)之后定義用戶定義的函數(shù),編譯器將顯示錯誤。這是因為編譯器不知道用戶定義的函數(shù)、傳遞給函數(shù)的參數(shù)類型和返回類型。
在C ++中,函數(shù)原型是函數(shù)的聲明,而沒有它的主體來提供有關用戶定義函數(shù)的編譯器信息。 上例中的函數(shù)原型為:
int add(int, int);
你可以看到,原型中沒有函數(shù)體。而且,只有返回類型的參數(shù),沒有參數(shù)。您也可以像下面這樣聲明函數(shù)原型,但不需要編寫參數(shù)。
int add(int a, int b);
注意:如果用戶定義的函數(shù)在main()函數(shù)之前存在,則不必定義原型。
要執(zhí)行功能主體的代碼,需要調(diào)用(調(diào)用)用戶定義的功能。
在上面的程序中,add(num1,num2);內(nèi)部main()函數(shù)調(diào)用用戶定義的函數(shù)。
該函數(shù)返回一個整數(shù),該整數(shù)存儲在variable中add。
函數(shù)本身稱為函數(shù)定義。上面程序中的函數(shù)定義是:
// 函數(shù)定義 int add(int a,int b) { int add; add = a + b; return add; }
當函數(shù)被調(diào)用時,控制被轉(zhuǎn)移到函數(shù)體的第一個語句。
然后,依次執(zhí)行函數(shù)體中的其他語句。
當函數(shù)定義中的所有代碼都被執(zhí)行時,程序的控制移動到調(diào)用程序。
在編程中,參數(shù)(parameter)是指在調(diào)用函數(shù)時傳遞給函數(shù)(函數(shù)定義)的數(shù)據(jù)。
在上面的示例中,兩個變量num1和num2在函數(shù)調(diào)用期間被傳遞給函數(shù)。這些參數(shù)稱為實際參數(shù)。
num1和num2的值分別初始化為變量a和b。 這些參數(shù)a和b稱為形式參數(shù)。
如下圖所示:
關于傳遞參數(shù)的注意事項
實際參數(shù)和形式參數(shù)的數(shù)量應相同。(例外:函數(shù)重載)
第一個實際參數(shù)的類型應與第一個形式參數(shù)的類型匹配。同樣,第二個實際參數(shù)的類型應該與第二個形式參數(shù)的類型匹配,依此類推。
您可以在不傳遞任何參數(shù)的情況下調(diào)用函數(shù)a。 傳遞給函數(shù)的參數(shù)數(shù)量取決于程序員如何解決問題。
您可以為參數(shù)指定默認值。這些參數(shù)稱為默認參數(shù)。
在上面的程序中,兩個參數(shù)都是int類型。但是沒有必要同時使用兩個相同類型的參數(shù)。
函數(shù)可以使用return語句將單個值返回到調(diào)用程序。
在上面的程序中,使用以下語句將add的值從用戶定義函數(shù)返回到調(diào)用程序:
return add;
下圖演示了return語句的工作。
在上面的程序中,將用戶定義函數(shù)中的add值返回給調(diào)用函數(shù)。然后該值被存儲到一個變量sum中。
注意返回的變量,即add是int類型,sum也是int類型。
另外,請注意,函數(shù)的返回類型是在函數(shù)聲明符int add(int a, int b)中定義的,在add(int a, int b)之前的int表示函數(shù)應該返回一個int類型的值。
如果沒有值返回到調(diào)用函數(shù),則應使用void。