[C++基础学习-05]----C++函数详解

前言

        在学习C++的基础阶段,函数是一个非常重要的概念。函数是用来完成特定任务的一段代码,它可以被多次调用,并且可以接受参数和返回值。

正文

01-函数简介

        函数的定义
        在C++中,函数的定义通常包括函数的返回类型、函数名、参数列表和函数体。函数的定义通常有以下形式:

return_type function_name(parameters) {
    // 函数体
}

        其中:return_type 表示函数的返回类型,可以是intdoublevoid等;function_name 表示函数的名称;parameters 表示函数的参数列表,可以包括零个或多个参数;函数体中包含了函数需要执行的代码。

        函数的调用
        函数的调用是通过函数名加上参数列表来实现的,例如:sum函数被调用,并将传入的参数2和3相加并返回结果

int sum(int a, int b) {
    return a + b;
}

int main() {
    int result = sum(2, 3);
    return 0;
}

        函数参数
        函数可以接受参数,参数可以是基本数据类型、数组、结构体等。参数可以有默认值,也可以使用引用传递来改变参数的值。

        函数返回值:
        函数可以有返回值,返回值可以是任意类型,如果函数不需要返回值,可以使用void作为返回类型。

        函数重载:
        C++支持函数重载,即可以定义同名函数,但参数个数或参数类型不同,编译器根据调用时的参数类型决定调用哪个函数。

        递归函数:
        C++支持递归函数,即函数体内调用自身的函数。递归函数通常用于解决数学问题或树形结构等问题。

02-函数的定义

        具体代码和解释如下

#include<iostream>
using namespace std;

int add(int num1, int num2)
{
	int sum = num1 + num2;
	return sum;
}


int main()
{


	system("pause");
	return 0;
}

03-函数的调用

        具体代码和解释如下

#include<iostream>
using namespace std;


// num1 和num2成为形参
int add(int num1, int num2)
{
	int sum = num1 + num2;
	return sum;
}

int main()
{
	int a = 10;
	int b = 20;

	// a和b 成为实参
	int c = add(a, b);
	cout <<"c = "<< c << endl;

	a = 200;
	b = 300;

	c = add(a, b);  // c已经定义过一次就没有必要再次进行定义
	cout << "c = " << c << endl;


	system("pause");
	return 0;
}

04-函数的值传递

        具体代码和解释如下

#include<iostream>
using namespace std;


// 值传递
// 定义函数,实现两个数字交换的过程

// 如果函数不需要返回值,声明函数的时候可以使用void
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;

	//return;   返回值不需要的时候,可以不用写return
}

int main()
{
	int a = 10;
	int b = 20;
	// 值传递的时候,只是改变形参,实参并未发生改变
	swap(a, b);


	system("pause");
	return 0;
}

05-函数的常见样式

        具体代码和解释如下

#include<iostream>
using namespace std;


// 函数的常见样式
// 1、无参无返
void test01()
{
	cout << "this is test01" << endl;
}

// 2、有参无返
void test02(int a)
{
	cout<<  "this is test02 a =" << a << endl;
}

// 3、无参有返

int test03()
{
	cout << "this is test03" << endl;
	return 100;//需要写返回值,不然将报错,写多少,调用的时候等于多少
}

// 4、有参有返
int test04(int a)
{

	cout << "this is test04" << endl;
	return a;//需要写返回值,不然将报错
}

int main()
{

	// 无参无返的函数调用
	test01();


	// 有参无返的函数调用
	test02(100);


	//无参有返函数调用

	int num1 = test03();
	cout<< "num1 = " << num1 << endl;
	
	// 有参有返的函数调用
	int num2 = test04(10000);
	cout << "num2 = " << num2 << endl;

	system("pause");
	return 0;
}

06-函数的分文件编写

        具体代码和解释如下

        swap.h文件

#pragma once
#include <iostream>
using namespace std;


void swap(int a, int b);

         swap.cpp文件

#include "swap.h"


void swap(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
}

        主函数

#include<iostream>
using namespace std;
#include "swap.h"

// 函数的声明
// void swap(int a, int b);
// 
// void swap(int a, int b)
// {
// 	int temp = a;
// 	a = b;
// 	b = temp;
// 	cout << "a = " << a << endl;
// 	cout << "b = " << b << endl;
// }

int main()
{
	int a = 10;
	int b = 20;

	swap(a, b);
	
	// 由于声明的main主函数,为入口函数,因此,声明其他函数的时候,必须放在main的前面,这是非常不方便的
	// 因此当出现一个大项目函数较多时,可以采用份文件编写的方法
	// 步骤 1、创建头文件.h文件
	// 2、创建源文件.cpp文件
	// 3、在头文件中写函数的声明
	// 4、在源文件中写函数的定义

	system("pause");
	return 0;
}

总结 

        函数是C++编程中的基本组成部分,通过函数可以实现代码的模块化,提高代码的复用性和可读性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/591959.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ruoyi漏洞总结

若依识别 黑若依 :icon hash"-1231872293 绿若依 :icon hash"706913071” body" 请通过前端地址访 " body" 认证失败&#xff0c;无法访问系统资源 " 如果页面访问显示不正常&#xff0c;可添加默认访问路径尝试是否显示正常 /login?redi…

20232937文兆宇 2023-2024-2 《网络攻防实践》实践八报告

20232937文兆宇 2023-2024-2 《网络攻防实践》实践八报告 1.实践内容 动手实践任务一 对提供的rada恶意代码样本&#xff0c;进行文件类型识别&#xff0c;脱壳与字符串提取&#xff0c;以获得rada恶意代码的编写作者&#xff0c;具体操作如下&#xff1a; &#xff08;1&am…

Deep Learning Part Eight--Attention 24.5.4

01.在翻译、语音识别等将一个时序数据转换为另一个时序数据的任务中&#xff0c;时序数据之间常常存在对应关系 02.Attention 从数据中学习两个时序数据之间的对应关系 03.Attention 使用向量内积&#xff08;方 法之一&#xff09;计算向量之间的相似度&#xff0c;并输出这个…

【C++题解】1658. 游乐设施

问题&#xff1a;1658. 游乐设施 类型&#xff1a;分支结构 题目描述&#xff1a; 游乐场引进了一个新的游乐设施&#xff0c;可以两人一组开动该设施&#xff0c;但设施设计上有一个缺陷&#xff0c;必须一个人的体重在 60 公斤以上&#xff08;包含 60 公斤&#xff09;&am…

CST保存项目时失败?如何解决?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

AI智能名片商城小程序构建企业级私域的IMC模型:IP、MarTech与Content的深度融合

在数字化营销的新时代&#xff0c;为企业定制开发的AI智能名片B2B2C商城小程序&#xff0c;结合我们丰富的私域运营实践&#xff0c;我们深刻领悟到构建企业级私域的三大核心要素&#xff1a;IP&#xff08;企业人设&#xff09;、MarTech&#xff08;营销技术&#xff09;和Co…

飞机起飞降落

第一版&#xff1a;飞机起飞降落脚本 最大速度是1200&#xff0c;螺旋桨速度到1000的时候飞机会上升&#xff0c;到850的时候会下降&#xff0c; 有上升状态&#xff0c;平飞状态和悬浮状态&#xff0c;三个状态按e都可以使螺旋桨减速然后下降 但是是匀速下降&#xff0c;并且…

对命令模式的理解

目录 一、场景1、文本编辑器并不是一个好的例子&#xff0c;设备控制器才是2、设备控制器的demo 二、不用命令模式1、代码2、问题 三、使用命令模式1、代码2、当需求变化时2.1 新增代码2.2 优点 四、进一步思考1、省略对Command的建模可以吗&#xff1f;2、命令模式的价值 一、…

wpf转换器

WPF&#xff08;Windows Presentation Foundation&#xff09;中的转换器主要是指IValueConverter接口的实现&#xff0c;它用于在数据绑定过程中转换源数据和目标数据的类型或表示形式。这种机制使得开发者能够灵活地处理数据&#xff0c;特别是在用户界面&#xff08;UI&…

知识图谱需求

文章目录 公共安全数字经济金融科技资源优化科学研究制造业转型公共健康人文发展 公共安全 公共安全领域信息化以现代通信、网络、数据库技术为基础&#xff0c;将所研究对象各要素汇总至数据库&#xff0c;并针对各个业务领域进行定制化开发&#xff0c;以满足公共安全实战需求…

吴恩达机器学习笔记 三十七 电影推荐系统 使用特征 成本函数 协同过滤算法

以电影评分系统为例&#xff0c;令 r(i, j) 来表示用户 j 已经对电影 i 评分&#xff0c; y&#xff08;i, j&#xff09;表示评分具体是多少。 假如每部电影有自己的特征&#xff0c;那么用户 j 对电影 i 的评分预测为 w(j) * x(i) b(j) r(i, j) &#xff1a;一个用户 j 是否…

P9422 [蓝桥杯 2023 国 B] 合并数列

P9422 [蓝桥杯 2023 国 B] 合并数列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 用队列即可 当两个队列队首&#xff1a;a b &#xff0c;弹出 当a < b&#xff0c;把a加给其后一个元素&#xff0c;弹出a 当b < a&#xff0c;把b加给其后一个元素&#xff0c;弹出…

BUUCTF---misc---菜刀666

1、下载附件&#xff0c;在wireshark中分析 2、题目说是菜刀&#xff0c;联想到http协议的post方法 3、使用命令过滤 http.request.methodPOST 4、打开数据包&#xff0c;发现有个不一样 这里面有一大串的数据包 5、追踪http数据流&#xff0c;发现z2后面是一个jpg文件的文件…

计算机——磁盘

磁盘介绍 磁盘&#xff08;Disk&#xff09;是计算机存储设备的一种&#xff0c;用于持久存储和读取数据。它以圆盘状的物理结构为基础&#xff0c;通过磁性材料在盘片上制造磁道和磁点&#xff0c;利用磁头来读写数据。 磁盘分类 磁盘的常见类型包括硬盘驱动器&#xff08;…

数据库基础--MySQL多表查询之联表查询

联表查询 定义&#xff1a;多张表联合在一起查询&#xff0c;例如学生信息与学生班级表、部门与员工表 创建两张表&#xff0c;主表与从表 CREATE TABLE TestMain(id INT Not NULL AUTO_INCREMENT,nameVARCHAR(10),introduction VARCHAR(255),PRIMARY KEY(id) ); CREATE TAB…

商超物联网方案-Hotspot Service和客流分析方案概述

商超物联网方案-Hotspot Service和客流分析方案概述 场景概述 大型商场、大型综合体在相互竞争及线上消费的影响下&#xff0c;利润增长缓慢&#xff0c;迫切需要通过提供个性化服务提升顾客购物体验&#xff0c;促进利润增长。 向不同顾客推送其感兴趣的广告&#xff0c;不仅…

opengauss概述-基础知识篇-备考华为高斯

目录 &#x1f9e8;考前准备: &#x1f3a1;数据库操作语言 ✨OLTP和OLAP &#x1f3af;常用函数 &#x1f9f2;字符处理函数 关于 left 和 right 特别重点的字符串函数 &#x1f9f2;数字操作函数 关于 ceil 和 floor &#x1f9f2;时间和日期处理函数 &#x1f9f…

自定义类型:联合体

1.联合体 首先我们还是要讲解一下什么是联合体&#xff1a; 联合体&#xff08;Union&#xff09;是一种特殊的数据结构&#xff0c;它允许在相同的内存位置存储不同的数据类型。联合体的大小等于其最大成员的大小&#xff0c;因为所有成员共享同一块内存空间。联合体的每个成…

【C语言】详解预处理

、 最好的时光&#xff0c;在路上;最好的生活&#xff0c;在别处。独自上路去看看这个世界&#xff0c;你终将与最好的自己相遇。&#x1f493;&#x1f493;&#x1f493; 目录 •✨说在前面 &#x1f34b;预定义符号 &#x1f34b; #define • &#x1f330;1.#define定义常…

Oracle对空值(NULL)的 聚合函数 排序

除count之外sum、avg、max、min都为null&#xff0c;count为0 Null 不支持加减乘除&#xff0c;大小比较&#xff0c;相等比较&#xff0c;否则只能为空&#xff1b;只能用‘is [not] null’来进行判断&#xff1b; Max等聚合函数会自动“过滤null” null排序默认最大&#xf…
最新文章