C++ 函數:初學者的全面指南

你好,有抱負的程式設計師!今天,我們將踏上一段令人興奮的旅程,進入 C++ 函數的世界。作為你鄰居的親切計算機科學老師,我在這裡指導你掌握這個將徹底改變你編碼方式的基礎概念。所以,坐好你的虛擬座位,讓我們一起深入探討!

C++ Functions

什麼是函數?

在我們開始編程之前,讓我們先了解函數是什麼。想像你正在烤餅乾(美味!),你每次都重新發明配方嗎?不是的,你遵循一套指示 - 在編程中,函數就是這個意思。它是一段可重用的代碼塊,用於執行特定的任務。

定義函數

讓我們從 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!

讓我們分解一下:

  1. 我們定義了一個名為 greet 的函數,它接受一個 string 类型的參數 name
  2. 函數不返回任何東西,所以我們使用 void 作為返回類型。
  3. 在函數內部,我們使用提供的名稱打印一個問候信息。
  4. 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