小古銀的官方網(wǎng)站(完整教程):http://www.xiaoguyin.com/
C++入門教程視頻:https://www.bilibili.com/video/av20868986/
前言
函數(shù)又叫做功能,就是將一個功能的一堆實現(xiàn)代碼封裝到一起,而它的作用就是通過簡單的一條語句就可以使用這個功能,而不需要知道代碼怎樣寫。
舉個例子,std::sqrt()函數(shù)的功能是:求一個數(shù)的根。std是前面提到的命名空間,而sqrt就是這個函數(shù)的名字,這個函數(shù)在cmath標(biāo)準(zhǔn)庫中??梢杂孟旅娴男问绞褂眠@個功能:
std::sqrt(100);
像上面這樣使用函數(shù)的功能,就叫做調(diào)用函數(shù)。上面代碼中,100作為函數(shù)參數(shù)傳給函數(shù),讓函數(shù)來計算它的運算結(jié)果。
std::sqrt()函數(shù)是用來求根的,所以會有計算結(jié)果,可以用下面代碼輸出計算結(jié)果:
std::cout << std::sqrt(100) << std::endl;
函數(shù)的計算結(jié)果叫做返回值。當(dāng)然也可以用變量來保存返回值:
double root = std::sqrt(100);
而整個過程,你都不需要考慮std::sqrt()函數(shù)里面的代碼是怎樣寫的,這就是函數(shù)的作用。
C++中的標(biāo)準(zhǔn)庫(包含C語言的函數(shù)庫)有很多非常有用的函數(shù)。
調(diào)用函數(shù)
C++標(biāo)準(zhǔn)庫中有很多非常有用的函數(shù),當(dāng)然,如果想提高水平不妨嘗試以下實現(xiàn)標(biāo)準(zhǔn)庫的功能。但是實際工程中,建議能使用標(biāo)準(zhǔn)庫就不要自己再寫一個。因為,你手寫一個需要時間,調(diào)用不需要;而且你不留意還會寫出bug;還有,標(biāo)準(zhǔn)庫里的東西編譯器都會有優(yōu)化,你寫的不一定會比標(biāo)準(zhǔn)庫里的快。
如果你調(diào)用的函數(shù)不是自己寫的,那你就需要知道函數(shù)怎么調(diào)用,函數(shù)需要的參數(shù)應(yīng)該怎么填。
例如標(biāo)準(zhǔn)庫cmath中的函數(shù)std::abs(),它是用來求絕對值的,它只有一個參數(shù)而且這個參數(shù)只能接收數(shù)值,它會將這個參數(shù)轉(zhuǎn)換成絕對值,然后通過返回值返回。
#include <cmath> // std::abs
#include <iostream> // std::cout std::endl
int main(void)
{
std::cout << std::abs(-100) << std::endl;
return 0;
}
輸出結(jié)果:
100
對于標(biāo)準(zhǔn)庫里的函數(shù),可以參考我在第一篇教程中提到的兩個說明文檔,也可以在網(wǎng)上找資料。
注意:C++可以調(diào)用C語言的標(biāo)準(zhǔn)庫,但是C語言的標(biāo)準(zhǔn)庫在C++中是棄用的,即不推薦使用。如:C++標(biāo)準(zhǔn)庫cmath對應(yīng)C語言的標(biāo)準(zhǔn)庫是math.h。就是說,建議調(diào)用cmath而不是math.h
鞏固練習(xí)
- 從終端輸入一個數(shù),代表弧度,然后輸出這個弧度的
cos、sin、tan的值??梢允褂?code>std::cos()、std::sin()、std::tan(),這三個函數(shù)都在cmath標(biāo)準(zhǔn)庫中。 - 從終端輸入一個數(shù),代表角度,然后使用
std::cos()、std::sin()、std::tan()計算出這個角度對應(yīng)的值。 - 輸入一個數(shù),使用
std::pow()函數(shù)求這個數(shù)的平方和立方。std::pow()函數(shù)在cmath標(biāo)準(zhǔn)庫中。