作用:将一段经常使用的代码进行封装,减少重复代码
6.1 函数的定义/调用
实现一个加法函数,功能:传入两个整型数据,计算数据相加的结果,并且返回。
// 定义加法函数
// num1和num2为形参
int add(int num1, int num2) // 返回值类型 函数名(参数列表){函数体 return表达式}
{
int sum = num1 + num2;
return sum;
}
#include<iostream>
using namespace std;
int main(){
int a = 7;
int b = 8;
// a,b为实参
int sum = add(a, b);
cout << sum << endl;
return 0;
}
6.2 值传递
值传递就是函数调用时实参将数值传入给形参
值传递时,如果形参发生变化,并不影响实参
#include<iostream>
using namespace std;
// 函数之“值传递”
void swap(int num1, int num2){
cout << "交换前的值";
cout << "num1的值:" << num1 << endl;
cout << "num2的值:" << num2 << endl;
cout << "交换后的值";
int temp = num1;
num1 = num2;
num2 = temp;
cout << "num1的值:" << num1 << endl;
cout << "num2的值:" << num2 << endl;
return; // 当函数返回值类型为void时, 可以不写,也可这样写
}
int main(){
int a = 10;
int b = 22;
swap(a, b);
cout << "值传递时,如果形参发生任何改变,并不影响实参" << endl;
cout << "a的值:" << a << endl;
cout << "b的值:" << b << endl;
return 0;
}
6.3 函数的样式
1. 无参无返
2. 无参有返
3. 有参无返
4. 有参有返
6.4 函数的声明
可以将函数往主函数后面写,提前使用函数声明告诉编译器这个函数是存在的。
#include <iostream>
using namespace std;
// 函数声明
// 提前告诉编译器函数的存在,可以利用函数的声明
int max(int num1, int num2);
int main(){
int a = 10;
int b = 20;
cout << max(a, b);
return 0;
}
int max(int num1, int num2)
{
return num1 > num2 ? num1 : num2; // 三目运算符
}
6.5 函数分文件编写
作用:让代码结构更加清晰
函数分文件编写步骤:
1)创建.h头文件
2)创建.cpp源文件
3)在.h头文件中写函数的声明
4)在.cpp源文件中写函数的定义
swap.h
#include <iostream>
using namespace std;
void swap(int a, int b);
swap.cpp
#include “swap.h”
void swap(int a, int b)
{
int tmp = a;
int a = b;
int b = tmp;
cout << “a = ” << a << endl;
cout << “b = ” << b << endl;
}
func.cpp
#include “swap.h”
int main()
{
int a = 10;
int b = 12;
swap(a, b);
return 0;
}