函数

2023-08-29 20:49:47 浏览数 (1)

函数

1.1 概述

作用:将一段经常使用的代码封装起来,减少重复代码

一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能;

1.2 函数的定义

函数的定义一般主要有5个步骤:

1、返回值类型

2、函数名

3、参数列表

4、函数体语句

5、return 表达式

例:实现一个加法函数,功能是,传入两个整型数据,计算数据相加的结果,并且返回

1、返回值类型 int

2、函数名 add

3、参数列表 (int num1,int num2)

4、函数体语句 int sum = num1 num2;

5、return 表达式 return sum;

1.3 函数的调用

int sum = add(num1,num2);

#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; //定义函数要在调用函数之前,否则会报找不到标识符的错误 //num1和num2称为形参,函数定义的时候,并没有实际的参数,只是一个形式上的参数,简称形参 int add(int num1, int num2) { int sum = num1 num2; return sum; } int main() { int a = 1; int b = 2; //a和b称为实参,即有实际的参数 //当调用函数时,实参的值会传递给形参 cout << add(a,b) << endl; return 0; }

1.4 值传递

所谓值传递,就是函数调用时实参将数值传入给形参

值传递时,如果形参发生变化,并不会影响实参

#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; //定义函数要在调用函数之前,否则会报找不到标识符的错误 //num1和num2称为形参,没有实际的参数 int add(int num1, int num2) { int sum = num1 num2; return sum; } void swap(int num1, int num2) { cout << "交换前:" << endl; cout << "num1 = " << num1 << endl; cout << "num2 = " << num2 << endl; int temp = num1; num1 = num2; num2 = temp; cout << "交换后:" << endl; cout << "num1 = " << num1 << endl; cout << "num2 = " << num2 << endl; } int main() { int a = 1; int b = 2; //a和b称为实参,即有实际的参数 //值传递的过程中,形参的改变并不会影响实参 cout << add(a,b) << endl; cout << "交换前实参:" << endl; cout << "a = " << a << endl; cout << "b = " << b << endl; swap(a, b); cout << "交换后实参:" << endl; cout << "a = " << a << endl; cout << "b = " << b << endl; return 0; }

1.5 函数的常见样式

常见的函数样式有4种:

1、无参无返

2、有参无返

3、无参有返

4、有参有返

1.6 函数的声明

作用:告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。

函数的声明可以多次,但是函数 的定义只能 有一次

刚刚我们已经测试了,将函数的定义放在函数的调用之前,编译无法通过,但是我们可以通过函数的声明提前告诉编译器函数的存在

#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; int add(int num1, int num2); void swap(int a, int b); int main() { int a = 1; int b = 2; //a和b称为实参,即有实际的参数 //值传递的过程中,形参的改变并不会影响实参 cout << add(a,b) << endl; cout << "交换前实参:" << endl; cout << "a = " << a << endl; cout << "b = " << b << endl; swap(a, b); cout << "交换后实参:" << endl; cout << "a = " << a << endl; cout << "b = " << b << endl; return 0; } //定义函数要在调用函数之前,否则会报找不到标识符的错误,我们可以通过函数的声明解决这个问题 //num1和num2称为形参,没有实际的参数 int add(int num1, int num2) { int sum = num1 num2; return sum; } void swap(int num1, int num2) { cout << "交换前:" << endl; cout << "num1 = " << num1 << endl; cout << "num2 = " << num2 << endl; int temp = num1; num1 = num2; num2 = temp; cout << "交换后:" << endl; cout << "num1 = " << num1 << endl; cout << "num2 = " << num2 << endl; }

声明可以有多次,但是定义只能有一次;但是可以通过重写的方式定义方法;

1.7 函数的分文件编写

作用:让代码结构更加清晰

函数分文件编写一般有4个步骤

1、创建后缀名为 .h 的头文件

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

3、在头文件中写 函数的声明

4、在源文件中写 函数的定义

例如:创建 test.h 头文件 声明

#pragma once #include <iostream> using namespace std; //函数的声明放在头文件中 int add(int num1, int num2); void swap(int a, int b); void swap(int a);

创建 test.cpp 源文件 定义函数,在这个源文件中引入头文件

#define _CRT_SECURE_NO_WARNINGS 1 //在源文件中包含头文件,包含自己写的头文件 用 双引号 #include "test.h" //函数的定义放在源文件中 //定义函数要在调用函数之前,否则会报找不到标识符的错误,我们可以通过函数的声明解决这个问题 //num1和num2称为形参,没有实际的参数 int add(int num1, int num2) { int sum = num1 num2; return sum; } void swap(int num1, int num2) { cout << "交换前:" << endl; cout << "num1 = " << num1 << endl; cout << "num2 = " << num2 << endl; int temp = num1; num1 = num2; num2 = temp; cout << "交换后:" << endl; cout << "num1 = " << num1 << endl; cout << "num2 = " << num2 << endl; } void swap(int num1) { cout << "交换前:" << endl; cout << "num1 = " << num1 << endl; }

之后在一个源文件中 写一个 主方法,并且引入 test.h 头文件 即可 使用 封装好的函数

#define _CRT_SECURE_NO_WARNINGS 1 //在这里包含头文件即可 #include "test.h" int main() { int a = 1; int b = 2; //a和b称为实参,即有实际的参数 //值传递的过程中,形参的改变并不会影响实参 cout << add(a,b) << endl; cout << "交换前实参:" << endl; cout << "a = " << a << endl; cout << "b = " << b << endl; swap(a, b); cout << "交换后实参:" << endl; cout << "a = " << a << endl; cout << "b = " << b << endl; cout << "重写swap方法后的输出:"; swap(a); return 0; }

c++

0 人点赞