一、函數簡介
(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、返回引用