一、函數簡介

(1)定義:函數是執行特定任務的代碼塊,可以被程序中的多個地方調用。使用函數可以增加代碼的可重用性、可讀性和可維護性。

(2)功能:

  • 封裝:將特定功能封裝在函數中,便於管理和修改。
  • 複用:同一段功能代碼可以在程序中多次調用,減少代碼重複。
  • 結構化:通過函數組織代碼,提高程序的結構清晰度。

(3)實例:

#include <iostream>

// 函數聲明
int add(int a, int b);

int main() {
    int result = add(5, 3);
    std::cout << "5 + 3 = " << result << std::endl;
    return 0;
}

// 函數定義
int add(int a, int b) {
    return a + b;
}

二、函數的聲明和定義

1、函數聲明

 告訴編譯器函數的名稱、返回類型和參數類型,但不包含函數體。通常放在頭文件中或在使用函數前進行聲明。

 示例:

int multiply(int a, int b); // 函數聲明

函數定義:

int multiply(int a, int b) { // 函數定義
    return a * b;
}

2、函數分離編譯

  • 聲明:放在頭文件(如 multiply.h)。
  • 定義:放在源文件(如 multiply.cpp)。

    multiply.h 文件:

#ifndef MULTIPLY_H
#define MULTIPLY_H

int multiply(int a, int b);

#endif

multiply.cpp:

#include "multiply.h"

int multiply(int a, int b) {
    return a * b;
}

main.cpp:

#include <iostream>
#include "multiply.h"

int main() {
    int result = multiply(4, 6);
    std::cout << "4 * 6 = " << result << std::endl;
    return 0;
}

編譯命令(假設使用g++):

g++ main.cpp multiply.cpp -o program

三、函數調用

1、基本調用

通過函數名稱和必要的參數來調用函數。

示例

#include <iostream>

void greet() {
    std::cout << "Hello, World!" << std::endl;
}

int main() {
    greet(); // 調用函數
    return 0;
}

四、參數傳遞機制

C++ 中函數參數的傳遞方式主要有以下三種:

1、傳值調用:

  •  定義:函數接收參數的副本,函數內對參數的修改不會影響原始數據。
  • 示例:
#include <iostream>

void changeValue(int num) {
    num = 100;
    std::cout << "Inside function: " << num << std::endl;
}

int main() {
    int value = 50;
    changeValue(value);
    std::cout << "Outside function: " << value << std::endl;
    return 0;
}

2、傳引用調用

定義:函數接受參數的引用,函數內對參數的修改會影響原始數據。

示例:

#include <iostream>

void changeValue(int &num) {
    num = 100;
    std::cout << "Inside function: " << num << std::endl;
}

int main() {
    int value = 50;
    changeValue(value);
    std::cout << "Outside function: " << value << std::endl;
    return 0;
}

3、傳指針調用

定義:函數接收指向參數的指針,函數內通過指針可以修改原始數據。

示例:

#include <iostream>

void changeValue(int *num) {
    *num = 100;
    std::cout << "Inside function: " << *num << std::endl;
}

int main() {
    int value = 50;
    changeValue(&value);
    std::cout << "Outside function: " << value << std::endl;
    return 0;
}

輸出:

Inside function: 100
Outside function: 100

 changeValue函數通過指針修改了原始變量value的值。

五、返回值

 函數可以通過return語句將結果返回給調用者。返回值的類型可以是基本數據類型、引用、指針、對象等。

1、返回基本數據類型

示例:

#include <iostream>

int add(int a, int b) {
    return a + b;
}

int main() {
    int sum = add(3, 4);
    std::cout << "Sum: " << sum << std::endl;
    return 0;
}

輸出:

Sum: 7

2、返回引用