C++入门系列第四篇。函数让你给一段代码命名、接收输入,并从任何地方调用它——这是组织任何程序的核心工具。
为什么用函数#
函数让代码可复用、可测试、可读。与其复制同样的逻辑,不如写一次、调用多次。
第一个函数#
#include <iostream>
int add(int a, int b) {
return a + b;
}
int main() {
int result = add(3, 4);
std::cout << result << '\n'; // 输出 7
}cppadd 接收两个 int 参数,返回 int。这里的 3 和 4 是实参。
返回类型与 void#
如果函数不产生值,返回类型就是 void:
void greet(std::string name) {
std::cout << "Hello, " << name << "!\n";
}cpp前置声明#
要在定义之前调用函数(例如跨文件拆分代码),先声明它:
int multiply(int x, int y); // 声明
int main() {
std::cout << multiply(6, 7) << '\n';
}
int multiply(int x, int y) { // 定义
return x * y;
}cpp声明必须与定义完全一致。
按值传递参数#
默认情况下,C++ 把实参复制到形参中。函数内部的修改不会影响调用者:
void increment(int x) {
++x;
}
int main() {
int a = 5;
increment(a);
std::cout << a << '\n'; // 仍是 5
}cpp要修改调用者的变量,需要传引用——下一篇会介绍。
默认实参#
参数可以有默认值:
void print(std::string msg, int times = 1) {
for (int i = 0; i < times; ++i) {
std::cout << msg << '\n';
}
}
print("hi"); // 输出一次
print("hi", 3); // 输出三次cpp函数重载#
只要参数列表不同,多个函数可以同名:
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }cpp编译器根据实参类型选择正确的版本。
结论#
函数是C++程序的积木:声明、定义、调用、复用。本系列下一篇:指针与引用。