CH06_函数
概述
作用:将一段可复用的代码封装起来,减少代码重复。
一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。
函数的定义
函数的定义一般主要有5个步骤:
- 返回值类型
- 函数名
- 参数列表
- 函数体语句
- 返回值
语法:
1 2 3 4
| 返回值类型 函数名(参数列表){ 函数体语句 return 返回值; }
|
- 返回值类型:一个函数可以返回一个值
- 函数名:给函数起的名称
- 参数列表:使用该函数时,传入的数据
- 函数体语句:花括号内的代码,函数内需要执行的语句
- return表达式:和返回值类型挂钩,函数执行完后,返回相应的数据。
示例:
1 2 3 4
| int add(int num1, int num2) { int sum = num1 + num2; return sum; }
|
函数的调用
功能:调用定义好的函数
语法:参数名(参数)
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <iostream> using namespace std;
int add(int num1, int num2) { int sum = num1 + num2; return sum; }
int main() { int num1 = 15, num2 = 5;
int sum = add(num1, num2); cout << "结果:" << sum << endl;
system("pause"); return 0; }
|
值传递
值传递,就是函数调用时实参将数值传入给形参
值传递时,在方法中对参数改变,对实参不会有任何影响。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <iostream> using namespace std;
void swap(int num1, int num2) { int temp = num1; num1 = num2; num2 = temp;
cout << "num1:" << num1 << endl; cout << "num2:" << num2 << endl; }
int main() { int num1 = 15, num2 = 5;
cout << "num1:" << num1 << endl; cout << "num2:" << num2 << endl; cout << "---------------------------" << endl;
swap(num1, num2); cout << "---------------------------" << endl;
cout << "num1:" << num1 << endl; cout << "num2:" << num2 << endl; cout << "---------------------------" << endl;
system("pause"); return 0; }
|
函数的常见样式
常见形式:
- 无参无返回值
- 有参无返回值
- 无参有返回值
- 有参有返回值
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include <iostream> using namespace std;
void fun1() { cout << "调用了无参无返回值的方法" << endl; }
void fun2(int num) { cout << "调用了有参无返回值的方法" << endl; cout << "参数num:" <<num<< endl; }
int fun3() { cout << "调用了无参有返回值的方法" << endl; cout << "返回值:10" << endl;
return 10; }
int fun4(int num) { cout << "调用了有参有返回值的方法" << endl; cout << "参树:"<<num << endl; cout << "返回值:" << (num+5) << endl;
return num+5; }
int main() { int num = 10;
fun4(num);
system("pause"); return 0; }
|
函数的声明
作用:告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。
函数的声明可以多次,但是函数的定义只能有一次。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <iostream> using namespace std;
int max(int a, int b); int max(int a, int b);
int max(int a, int b) { return a > b ? a : b; }
int main() {
int a = 10, b = 20;
cout << "最大值:" << max(a, b) << endl;
system("pause"); return 0; }
|
函数的分文件编写
作用:让代码结构更加清晰
步骤:
- 创建后缀名为.h的头文件
- 创建后缀名为.cpp的源文件
- 在头文件中写函数的声明
- 在源文件中写函数的定义
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #pragma once #include<iostream> using namespace std;
void swap(int a, int b);
#include "swap.h"
void swap(int a, int b) { int temp = a; a = b; b = temp;
cout << "a=" << a << endl; cout << "b=" << b << endl; }
|
1 2 3 4 5 6 7 8 9 10 11
| #include<iostream> #include "swap.h" //引入头文件
int main() {
//调用方法 swap(10, 20);
system("pause"); return 0; }
|