前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

函数

原创
作者头像
用户10731060
发布2023-08-29 20:49:47
1090
发布2023-08-29 20:49:47
举报
文章被收录于专栏:初学C++

函数

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; }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档