c++中的函数

一、函数概述

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

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

二、函数的定义

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

  1. 返回值类型
  2. 函数名
  3. 参数列表
  4. 函数体语句
  5. return表达式

注意:函数不能写到main函数中去

#include<iostream>
using namespace std;
//函数定义
//语法
//返回值类型 函数名( 参数列表){ 函数体语句 return表达式}//加法函数,实现两个整型相加,并且将相加的结果进行返回
int add(int a, int b) {int sum = a + b;return sum;}
//主函数
int main() {system("pause");return 0;}

三、函数调用

功能:使用定义好的函数

语法:函数名(参数)

#include<iostream>
using namespace std;
//函数定义
//语法
//返回值类型 函数名( 参数列表){ 函数体语句 return表达式}//加法函数,实现两个整型相加,并且将相加的结果进行返回
int add(int a, int b) {int sum = a + b;return sum;}
//主函数
int main() {int a = 10;int b = 20;//main 函数中调用add函数//函数调用语法:函数名称(参数)//a,b称为实参//当调用函数的时候,实参的值会传递给形参int sum=add(a, b);cout<<sum<<endl;int c = 100;int d = 200;sum = add(c, d);cout << sum << endl;system("pause");return 0;}

四、值传递

  • 所谓值传递,就是函数调用时实参将数值传给形参
  • 值传递时,如果形参发生改变,并不会影响实参
#include<iostream>
using namespace std;
//值传递
//定义函数,实现两个数字进行交换//如果一个函数不需要返回值使用 void 表示,否则使用数据类型表示。void swap(int a, int b) {cout << "交换前:" << endl;cout << "a=" << a << endl;cout << "b=" << b << endl;int temp = a;a = b;b = temp;cout << "交换后:" << endl;cout << "a=" << a << endl;cout << "b=" << b << endl;
}int main() {int a = 10;int b = 20;cout << "a=" << a << endl;cout << "b=" << b << endl;swap(a, b); //调用函数,传递两个参数//当我们做值传递的时候函数的形参发生改变,但是实参不受影响。cout << "a=" << a << endl;cout << "b=" << b << endl;system("pause");return 0;
}

五、函数的常见样式

常见的函数样式有4种

  1. 无参无返
  2. 有参无返
  3. 无参有返
  4. 有参有返
#include <iostream>
using namespace std;
//函数的常见样式
//1.无参无返
void test01() {cout << "无参无返" << endl;
}
//2.有参无返
void test02(int a) {cout << "有参无返 a=" <<a<< endl;
}
//3.无参有返
int test03() {cout << "无参有返" << endl;return 10;
}//4.有参有返
int test04(int a) {cout << "有参有返 a=" << a << endl;return a;
}int main() {//无参无返的函数调用test01();//有参无返的函数调用test02(10);//无参有返的函数调用int b = test03();cout << "无参有返的返回值 b=" << b << endl;//有参有返的函数调用int c = test04(20);cout << "有参有返的返回值 c=" << c << endl;system("pause");return 0;
}

六、函数声明

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

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

#include <iostream>
using namespace std;
// 函数声明
//比较函数,实现两个整型数字进行比较,返回较大的值
//定义
int max(int a, int b) {return	a > b ? a : b; // 三目运算符,返回较大的值}int main() {int a = 10, b = 20;int result = max(a, b); //调用函数cout << "The maximum value is: " << result << endl;system("pause");return 0;}

如果把函数的定义放在main函数之后会报错

解决方案:对函数进行声明

#include <iostream>
using namespace std;
// 函数声明
//比较函数,实现两个整型数字进行比较,返回较大的值
//定义
//提前告诉编译器函数存在,可以利用函数声明来调用函数,而不需要实现函数体
int max(int a, int b);int main() {int a = 10, b = 20;int result = max(a, b); //调用函数cout << "The maximum value is: " << result << endl;system("pause");return 0;}int max(int a, int b) {return	a > b ? a : b; // 三目运算符,返回较大的值}

七、函数的分文件编写

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

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

  1. 创建后缀名为.h的头文件
  2. 创建后缀名为.cpp的源文件
  3. 在头文件中写函数的声明
  4. 在源文件中写函数的定义

头文件swap1.h

#include <iostream>
using namespace std;
//函数的声明
void swap1(int a, int b);

源文件 swap1.cpp

#include "swap1.h"//与头文件关联//函数的定义
void swap1(int a, int b) {int temp = a;a = b;b = temp;cout << "a = " << a << " b = " << b << endl;}

函数调用

#include <iostream>
using namespace std;
#include "swap1.h" //引入函数的头文件
//函数的分文件编写
//实现两个数字交换的函数//函数的声明
//void swap1(int a, int b);函数的定义
//void swap1(int a, int b) {
//	int temp = a;
//	a = b;
//	b = temp;
//	cout << "a = " << a << " b = " << b << endl;
//
//}int main() {int a=10, b=20;swap1(a, b); //调用函数system("pause");return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Laravel 6 - 第十二章 控制器

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

QService 服务 指令引用的“0x00000000”内存。该内存不能为“read“

QtServiceBase类在Qt框架中是设计用来简化Windows服务或类Unix守护进程创建的。这个类提供了一组方法和属性&#xff0c;使得开发者能够专注于服务逻辑&#xff0c;而不必担心操作系统层面的细节。下面是一些QtServiceBase类中常用的属性和方法&#xff1a; 常用方法 start():…

【Linux】Linux权限管理详解

&#x1f331;博客主页&#xff1a;青竹雾色间 &#x1f331;系列专栏&#xff1a;Linux &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 1. Linux权限概念2. 文件访问者分类a) 文件和目录的访问者&#xff1a;b) 文件类型和访问权限 3. 文件权限值的表…

安装VCenter 7 对硬件资源的需求

安装VMware vCenter Server 7.x 对硬件资源的需求主要包括以下方面&#xff1a; 服务器硬件&#xff1a; 处理器&#xff1a;64位 x86架构&#xff0c;推荐采用多核CPU以支持高并发管理和运行多个虚拟机。具体数量取决于vCenter Server将管理的虚拟机规模及复杂度。内存&#x…

第四百七十七回

文章目录 1. 知识回顾2. 使用方法2.1 源码分析2.2 常用属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"Get包简介"相关的内容&#xff0c;本章回中将介绍GetMaterialApp组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 知识回顾 我们在上一章回中已经…

K-近邻算法的 sklearn 实现

实验目的与要求 掌握基于 K-近邻分类算法的编程方法通过编程理解 K-近邻分类算法和该算法的基本步骤 实验器材 硬件&#xff1a;PC 机&#xff08;参与实验的学生每人一台&#xff09;软件环境&#xff1a;Python3.7 Pycharm 实验内容 使用 sklearn 库中的 neighbors 模块实…

xgp怎么取消续费 微软商店xgp会员取消自动续费详细教程

xgp怎么取消续费 微软商店xgp会员取消自动续费详细教程 XGP这个游戏平台小伙伴们并不陌生吧&#xff0c;它是微软Xbox游戏部门推出的游戏租赁制会员服务&#xff0c;主要用于主机和PC两个平台。这个平台的会员就可以免费享受多款大制作游戏&#xff0c;而且每个月还会自动更新…

Java中的运算符

运算符是用于数学函数、一些特殊的赋值语句和逻辑比较方面的特殊符号。 赋值运算符&#xff08;“”&#xff09; 赋值运算符是一个二元运算符&#xff08;即对两个操作数进行处理&#xff09;&#xff0c;功能是将右侧的操作数赋值给左侧的操作数。 int a 100; 该表达式就…

李廉洋:4.24-4.25现货黄金,WTI原油区间震荡,走势分析。

黄金消息面分析&#xff1a;金银近日回调。随着伊朗方面淡化以色列最新反击&#xff0c;中东地区局势没有进一步发酵下&#xff0c;风险溢价下降金银出现较大幅度调整。由于近期高于预期的通胀数据&#xff0c;降息预期持续降温。昨日疲软的美国PMI以及以色列在加沙攻击的加剧支…

宽字符的来历:从ASCII到Unicode,C语言中的宽字符处理

目录 一、ASCII编码&#xff1a;字符世界的开篇 二、Unicode与宽字符的诞生 宽字符类型与宽字符串 三、C语言中的宽字符处理函数 四、宽字符与多字节字符 结语 在计算机科学的发展历程中&#xff0c;字符编码经历了从简单到复杂、从单一语言到全球多语种支持的演变过程。…

【大模型应用极简开发入门(2)】GPT模型简史:从GPT-1到GPT-4:从小数据量的微调到大数据量的强化学习不断优化模型

文章目录 一. GPT-1&#xff1a;无监督与微调1. 在GPT-1之前的监督学习的问题2. GPT-1中新的学习过程-无监督的预训练3. 复杂任务下的微调4. GPT-1为更强大的模型铺平了道路 二. GPT-2&#xff1a;context learning1. 核心思想&#xff1a;context learning2. GPT-2的数据集 三…

Simulink从0搭建模型03-Enabled Subsystem 使能子系统

参考博客 b站视频 【Simulink 0基础入门教程 P4 使能子系统 Enabled Subsystem 的使用介绍】 个人听了这个博主的视频风格觉得很适合我入门学习&#xff0c;讲得很清楚。 另外&#xff0c;视频里面教得很详细了&#xff0c;我也不会再详细写怎么打开创建等步骤&#xff0c;跟着…

2024 证券从业资格证考试备考资料分享

2024 证券从业资格证考试备考资料分享 2024 年 06月1、2日 证券从业资格考试全国统一考试&#xff08;统考&#xff09;&#xff0c;预计将于5月初&#xff08;考前一个月&#xff09;左右开启报名 有没有小伙伴在准备备考的&#xff0c;不知道大家都准备怎么学习呢&#xff…

233 基于matlab的多通道非负矩阵分解(MNMF)算法

基于matlab的多通道非负矩阵分解&#xff08;MNMF&#xff09;算法。其能够寻找到一个非负矩阵W和一个非负矩阵H&#xff0c;满足条件VW*H,从而将一个非负的矩阵分解为左右两个非负矩阵的乘积。使用EM准则对混合信号进行分解。程序已调通&#xff0c;可直接运行。 233 多通道非…

面试被刷,原因居然是不会Git

大家好&#xff0c;我是知微&#xff01; 假设你是一个刚入行的菜狗程序员&#xff0c;正在开发一个软件。 现在老板需要你加一些功能&#xff0c;此时的你有一些担忧&#xff0c;如果对代码进行大刀阔斧的改动&#xff0c;最终却失败了。之前能正常运行的代码也被改得乱七八糟…

【力扣 Hot100 | 第六天】4.21(字母异位词分组)

9.字母异位词分组 9.1题目 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例一&#xff1a; 输入: strs ["eat", "tea", "tan&quo…

电商技术揭秘三十二:智能风控的案例研究与未来趋势

相关系列文章 电商技术揭秘相关系列文章合集&#xff08;1&#xff09; 电商技术揭秘相关系列文章合集&#xff08;2&#xff09; 电商技术揭秘二十八&#xff1a;安全与合规性保障 电商技术揭秘二十九&#xff1a;电商法律合规浅析 电商技术揭秘三十&#xff1a;知识产权保…

stable diffusion webui 使用 SDXL模型

可以去c站上下载别人处理好的模型&#xff0c;从liblib里下载也可以 DreamShaper XL 将下载好的模型复制到/models/Stable-diffusion目录下&#xff0c;webui的界面里选择加载模型 测试了一下&#xff0c;需要注意的是这三个选项 采样器必须设置为DPM SDE Karras &#xf…

spring高级篇(三)

1、Spring选择代理 1.1、Aspect和Advisor 在Spring框架中&#xff0c;"Aspect" 和 "Advisor" 是两个关键的概念&#xff0c;它们都与AOP&#xff08;面向切面编程&#xff09;密切相关&#xff1a; 如果要在Spring中定义一个Aop类&#xff0c;通常会&…

STM32H7的LCD控制学习和应用

STM32H7的LCD控制 LTDC基础硬件框图LTDC时钟源选择LTDC的时序配置LTDC背景层、图层1、图层2和Alpha混合LTDC的水平消隐和垂直消隐LCD的DE同步模式和HV同步模式的区别区分FPS帧率和刷新率避免LTDC刷新撕裂感的解决方法 驱动示例分配栈的大小MPU和Cache配置初始化SDRAM初始化LCD应…