聊聊C++內置函數和函數傳參
函數是一組一起執行一個任務的語句。每個 C++ 程序都至少有一個函數,即主函數 main() ,所有簡單的程序都可以定義其他額外的函數。
內置函數
在我們學習如何創建函數之前,讓我們先了解一些內置函數......
在C ++是一些常見的庫函數sqrt(),abs(),isdigit()等。
為了使用庫函數,我們通常需要包含定義這些庫函數的頭文件。
例如,為了使用sqrt()和等數學函數abs(),我們需要包含頭文件cmath。
- #include <cmath>
現在我們獲得了調用sqrt()任何數字的平方根的能力。
要調用基本函數,我們只需要函數名后跟一對括號,如sqrt(9). 例如:
- #include <iostream>
- #include <cmath>
- int main(){
- std::cout << sqrt(9) << "\n";
- }
使用rand()加上模運算符調用,生成隨機數。例如,rand() % 29將輸出 0 到28 之間的隨機數
函數
C++ 函數由兩個不同的部分組成:
- 聲明:這包括函數的名稱、返回類型是什么以及任何參數(如果函數將接受輸入值,稱為參數)。
- 定義:也稱為函數體,它包含函數應該做什么的指令。
C++ 中的函數定義的一般形式如下:
- return_type function_name( any, parameters, you, have ) {
- // Code block here
- return output_if_there_is_any;
- }
C++ 中,函數由一個函數頭和一個函數主體組成。下面列出一個函數的所有組成部分:
- 返回類型:函數可以返回一個值。該return_type是值的函數返回的數據類型。某些函數執行所需的操作而不返回值。在這種情況下, return_type 是關鍵字void。
- 函數名稱:這是函數的實際名稱。函數名和參數列表共同構成了函數簽名。
- 參數:參數就像占位符。當一個函數被調用時,你將一個值傳遞給參數。該值稱為實際參數或實參。參數列表是指函數參數的類型、順序和數量。參數可選;也就是說,一個函數可能不包含任何參數。
- 函數體:函數體包含一組定義函數功能的語句。
下面是一個函數聲明的例子。
- void greet() {
- std::cout << "Hello World";
- }
在上面的程序中,我們聲明了一個名為greet(). 要使用該函數greet(),我們需要調用它。
下面是我們如何調用上述greet()函數。
- int main() {
- // calling a function
- greet();
- }
傳遞參數
在C++中,函數聲明的代碼add應該在函數調用main之前。
C++中函數參數的傳遞方式有三種:傳值、傳地址、傳引用。
這里先學習最簡單的傳值。在這種傳遞參數 中,我們傳遞存儲或復制到函數形式參數中的參數值。因此,原始值不變,只是函數內部的參數發生了變化。
- void calc(int x);
- int main()
- {
- int x = 10;
- calc(x);
- printf("%d", x);
- }
- void calc(int x)
- {
- x = x + 10 ;
- }
在這種情況下,實際變量x不會改變,因為我們按值傳遞參數,因此傳遞了 x 的副本,該副本已更改,并且該復制的值在函數結束時被銷毀(超出范圍)。所以main() 中的變量x的值仍然是 10。
但是我們可以改變這個程序來修改原來的X,通過使函數計算時候,返回一個值,并存儲X該值。
- int calc(int x);
- int main()
- {
- int x = 10;
- x = calc(x);
- printf("%d", x);
- }
- int calc(int x)
- {
- x = x + 10 ;
- return x;
- }
20
形式參數(指針傳遞)
傳遞,形式參數可以作為引用或指針,在這兩種情況下,它們都會改變原始變量的值。
- void calc(int *p);
- int main()
- {
- int x = 10;
- calc(&x); // 傳遞x的地址作為參數
- printf("%d", x);
- }
- void calc(int *p)
- {
- *p = *p + 10;
- }
最終結果是20.