作用: 将一段可能会经常使用的代码封装起来,减少代码的重复编写
函数的定义一般包括五个部分:
返回值类型 函数名(参数) {
函数体;
return语句;
}
函数案例,实现两个整数的求和:
#include
using namespace std;
// 定义一个求和函数,返回求和的结果
int add(int x, int y) {
int sum = x + y;
return sum;
}
int main() {
cout << "两个整数的和为:" << add(10, 20) << endl;
system("pause");
return 0;
}
---------
两个整数的和为:30
如果函数不需要返回值,在声明的时候可以定义为void
。
当函数定义为void
时,函数中可以不写return语句,或者写成return;
即可,return后面直接跟冒号,不要跟其他内容,否则会报错。
函数案例,实现两个数的交换:
#include
using namespace std;
void swap(float x, float y) {
cout << "交换前的两个数分别为:x = " << x << ", y = " << y << endl;
float temp = x;
x = y;
y = temp;
cout << "交换后的两个数分别为:x = " << x << ", y = " << y << endl;
}
int main() {
swap(10, 20);
system("pause");
return 0;
}
---------
交换前的两个数分别为:x = 10, y = 20
交换后的两个数分别为:x = 20, y = 10
作用: 告诉编译器函数名称及如何调用函数,函数的实际主体可以单独定义
函数的声明可以有多次,但函数的定义只能有一次。
// 声明,可以有多次
int max(int a, int b);
int max(int a, int b);
// 定义,只能有一次
int max(int a, int b) {
return a > b ? a : b;
}
#include
using namespace std;
int max(int a, int b) {
return a > b ? a : b;
}
int main() {
int result = max(10, 20);
cout << result << endl;
system("pause");
return 0;
}
/*
在vs 2022中,max函数可以定义在main函数前,也可以定义在main函数后,并不妨碍main函数内的代码在调用该函数时找到它。
但在vs的其他一些版本中,max函数只能定义在main函数前才能被其调用,如果max函数定义在main函数后,程序会运行错误。为了不让这种错误发生,可以提前声明max函数。
*/
#include
using namespace std;
// 在main函数之前声明存在一个max函数
int max(int a, int b);
int main() {
int result = max(10, 20);
cout << result << endl;
system("pause");
return 0;
}
// max函数写在了main函数之后
int max(int a, int b) {
return a > b ? a : b;
}
作用: 让代码结构更加清晰
函数的分文件编写一般有四个步骤:
.h
的头文件.cpp
的源文件创建一个swap.h
头文件,内容如下:
#include
using namespace std;
// 实现两个数交换的函数声明
void swap(int a, int b);
// 如果函数声明不涉及iostream库、std命名空间等,都可以不写
创建一个swap.cpp
源文件,内容如下:
#include
using namespace std;
// 实现两个数交换的函数定义
void swap(int a, int b) {
cout << "交换前的两个数分别为:a = " << a << ", b = " << b << endl;
int temp = a;
a = b;
b = temp;
cout << "交换后的两个数分别为:a = " << a << ", b = " << b << endl;
}
在主程序中调用swap函数:
#include "swap.h" // 自定义的头文件用双引号括起来
int main() {
swap(100, 200);
return 0;
}
---------
交换前的两个数分别为:a = 100, b = 200
交换后的两个数分别为:a = 200, b = 100