C++ 函數:初學者的全面指南
你好,有抱負的程式設計師!今天,我們將踏上一段令人興奮的旅程,進入 C++ 函數的世界。作為你鄰居的親切計算機科學老師,我在這裡指導你掌握這個將徹底改變你編碼方式的基礎概念。所以,坐好你的虛擬座位,讓我們一起深入探討!
什麼是函數?
在我們開始編程之前,讓我們先了解函數是什麼。想像你正在烤餅乾(美味!),你每次都重新發明配方嗎?不是的,你遵循一套指示 - 在編程中,函數就是這個意思。它是一段可重用的代碼塊,用於執行特定的任務。
定義函數
讓我們從 C++ 中如何創建函數的基本知識開始。
returnType functionName(parameterList) {
// 函數體
// 要執行的代碼
return value; // 可選
}
這裡的每一部分意味著:
-
returnType
:函數將返回的數據類型(如 int、float、void 等) -
functionName
:你給函數的唯一名稱 -
parameterList
:函數需要的輸入(可選) - 函數體:實際執行工作的代碼
-
return value
:函數產生的結果(如果有的話)
示例:你的第一個函數
讓我們創建一個簡單的函數,向某人問候:
#include <iostream>
#include <string>
using namespace std;
void greet(string name) {
cout << "Hello, " << name << "! Welcome to C++ functions!" << endl;
}
int main() {
greet("Alice");
return 0;
}
當你運行這段代碼時,它將輸出:
Hello, Alice! Welcome to C++ functions!
讓我們分解一下:
- 我們定義了一個名為
greet
的函數,它接受一個string
类型的參數name
。 - 函數不返回任何東西,所以我們使用
void
作為返回類型。 - 在函數內部,我們使用提供的名稱打印一個問候信息。
- 在
main
函數中,我們調用greet
函數,並傳遞參數 "Alice"。
函數聲明
有時候,你可能想在定義函數之前聲明它。這被稱為函數原型。這就像告訴 C++,“嘿,我稍後會創建這個函數,但現在我想讓你了解一下。”
// 函數聲明
int add(int a, int b);
int main() {
int result = add(5, 3);
cout << "5 + 3 = " << result << endl;
return 0;
}
// 函數定義
int add(int a, int b) {
return a + b;
}
這在較大的程序中特別有用,你可能會在主函數之後或在不同的文件中定義函數。
調用函數
你已經在之前的例子中看到了如何調用函數,但讓我們再深入一點。當你調用一個函數時,程序會跳轉到那個函數的代碼,執行它,然後返回到它停下來的地方。
#include <iostream>
using namespace std;
void countDown(int start) {
for(int i = start; i > 0; i--) {
cout << i << "... ";
}
cout << "Blast off!" << endl;
}
int main() {
cout << "Initiating countdown:" << endl;
countDown(5);
cout << "Rocket has launched!" << endl;
return 0;
}
這將輸出:
Initiating countdown:
5... 4... 3... 2... 1... Blast off!
Rocket has launched!
在這裡,我們從 main
函數中調用了 countDown
函數。程序執行 countDown
函數,然後繼續 main
的其餘部分。
函數參數
函數可以接受多個參數,這使得它們更靈活、更強大。
#include <iostream>
using namespace std;
int calculateRectangleArea(int length, int width) {
return length * width;
}
int main() {
int area = calculateRectangleArea(5, 3);
cout << "The area of a 5x3 rectangle is: " << area << endl;
return 0;
}
這個函數接受兩個參數(長度和寬度),並返回它們的乘積(面積)。
參數的默認值
C++ 允許你為函數參數設置默認值。這意味著如果調用函數時沒有提供值,它將使用默認值。
#include <iostream>
using namespace std;
void printPowerLevel(string name, int level = 9000) {
cout << name << "'s power level is " << level << "!" << endl;
}
int main() {
printPowerLevel("Goku", 8000);
printPowerLevel("Vegeta"); // 使用默認值
return 0;
}
這將輸出:
Goku's power level is 8000!
Vegeta's power level is 9000!
在這個例子中,如果我們不指定一個權力等級,它默認為 9000(超過 9000)。
函數重載
C++ 允許你有具有相同名稱的多個函數,只要它們具有不同的參數列表。這被稱為函數重載。
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
int main() {
cout << "Adding integers: " << add(5, 3) << endl;
cout << "Adding doubles: " << add(3.14, 2.86) << endl;
return 0;
}
這段代碼定義了兩個 add
函數 - 一個用於整數,一個用於雙精度浮點數。C++ 根據你提供的參數類型來確定使用哪個函數。
常見的 C++ 函數方法
這裡是一張表,列出了你將遇到的某些常見的 C++ 函數方法:
方法 | 描述 | 示例 |
---|---|---|
max() |
返回兩個值中較大的 |
max(5, 10) 返回 10 |
min() |
返回兩個值中較小的 |
min(5, 10) 返回 5 |
abs() |
返回絕對值 |
abs(-5) 返回 5 |
pow() |
將一個數字提升到一個冪 |
pow(2, 3) 返回 8 |
sqrt() |
返回平方根 |
sqrt(25) 返回 5 |
round() |
將一個數字四捨五入到最接近的整數 |
round(3.7) 返回 4 |
ceil() |
向上取整到最接近的整數 |
ceil(3.2) 返回 4 |
floor() |
向下取整到最接近的整數 |
floor(3.8) 返回 3 |
記住,要使用這些數學函數,你需要在程序中包含 <cmath>
頭文件。
這就是它!你已經開始進入 C++ 函數的世界了。記住,熟能生巧,所以不要害怕嘗試這些概念。快樂編程,願你的函數總是返回你所期望的結果!
Credits: Image by storyset