函数
概述
将一段经常使用的代码封装起来,减少重复代码
一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能
函数的定义
函数的定义一般有五个步骤
-
返回值类型
-
函数名
-
参数表列
-
函数体语句
-
return 表达式
例如
xxxxxxxxxx
//加法函数
int add(int num1,int num2) {
int sum = num1 + num2;
return sum;
}
函数的调用
函数的定义一定要在函数调用的前面,否则无法调用
语法
xxxxxxxxxx
函数名 (参数)
例如
xxxxxxxxxx
using namespace std;
//加法函数
//定义函数时,num1 和 num2 没有实际的值,所以他们是形参
int add(int num1, int num2) {
int sum = num1 + num2;
return sum;
}
int main() {
int num1 = 10;
int num2 = 20;
//当调用 add 函数时,传入的 num1 和 num2 拥有实际的值 10 和 20
//所以在 main 中调用 add 函数时传入的 num1 和 num2 为实参
int sum = add(num1, num2);
cout << sum << endl;
system("pause");
return 0;
}
值传递
-
所谓值传递,就是函数调用时实参将数值传入给形参
-
值传递时,如果形参发生改变,并不会影响实参
例如
xxxxxxxxxx
using namespace std;
//定义函数,实现两个数字进行交换函数
//如果函数不需要返回值,声明的时候可以使用 void
void swap(int num1, int num2) {
cout << "形参开始交换 " << num1 << " 和 " << num2 << " 的位置" << endl;
int temp = num1;
num1 = num2;
num2 = temp;
cout << "形参交换结束 " << num1 << " 和 " << num2 << " 的位置" << endl;
}
int main () {
//值传递
int num1 = 50;
int num2 = 44;
cout << "实参交换之前 " << num1 << " 和 " << num2 << endl;
swap(num1,num2);
cout << "实参交换结束 " << num1 << " 和 " << num2 << endl;
system("pause");
return 0;
}
运行

函数的常见央视
-
无参无返
-
有参无返
-
无参有返
-
有参有返
xxxxxxxxxx
using namespace std;
//函数常见央视
//1、无参无返
void test01() {
cout << "这是无参无返函数" << endl;
}
//2、有参无返
void test02(int a) {
cout << "这是有参无返函数" << '\n';
cout << "参数为:" << a << endl;
}
//3、无参有返
int test03() {
cout << "这是无参有返函数" << endl;
return 5;
}
//4、有参有返
int test04(int a) {
cout << "这是有参有返函数" << '\n';
cout << "参数为:" << a << endl;
return 10;
}
int main() {
test01();
cout << endl;
test02(20);
cout << endl;
int b01 = test03();
cout << b01 << endl;
int b02 = test04(40);
cout << b02 << endl;
system("pause");
return 0;
}
运行

函数的声明
作用:告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义】
注意:函数的声明可以多次,但是函数的定义只能由一次
xxxxxxxxxx
using namespace std;
//如果不先定义函数,会导致 main 调用 Max 函数时找不到该函数,因为 Max 声明函数在 main 后
//声明函数则是告知编译器,Max 已经存在并声明
int Max(int a, int b);
int Max(int a, int b);
int Max(int a, int b);
//函数可以定义多次,但只能声明一次
int main(){
int a = 15;
int b = 10;
int c = Max(a, b);
cout << c << endl;
system("pause");
return 0;
}
//声明一个比大小的函数
int Max(int a,int b) {
return a > b ? a : b;
}
运行

函数的分文件编写
作用:让代码结构更加清晰
函数分文件编写需要
-
创建后缀名为 .h 的头文件
-
创建后缀名为 .cpp 的源文件
-
在头文件中写函数的声明
-
在源文件中写函数的定义
1、创建后缀名为 .h 的头文件


2、创建后缀名为 .cpp 的源文件

3、在头文件中写函数的声明
xxxxxxxxxx
using namespace std;
//导入需要使用的头文件
void swap(int a, int b);
//声明该函数
4、在源文件中写函数的定义
xxxxxxxxxx
//关联创建的头文件
//自定义的头文件需要使用 ""
void swap(int a,int b) {
int temp = a;
a = b;
b = temp;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
}
5、写入 main 文件
xxxxxxxxxx
using namespace std;
//导入自定义的头文件
int main() {
int a = 10;
int b = 20;
swap(a,b);
system("pause");
return 0;
}
运行
