C++基础入门详细教程-6函数

6函数

6.1概述

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

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

6.2函数的定义

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

1.返回值类型

2.函数名

3.参数表列

4.函数体语句

5.return表达式

语法:

返回值类型 函数名(参数列表)
{函数体语句return 表达式
}

返回值类型:一个函数可以返回一个值,在函数定义中

函数名:给函数起个名称

参数列表:使用该函数时,传入的数据

函数体语句:花括号内的代码,函数内需要执行的语句

return表达式:和返回值类型挂钩,函数执行完候,返回相应的数据

示例:定义一个加法函数,实现两个数相加

//函数定义
int add(int num1,int num2){int sum=sum1+sum2;return sum;
}

6.3函数的调用

作用:使用定义好的函数

语法:函数名(参数)

示例:

//函数定义
int add(int num1,int num2){//定义中的num1,num2称为形式参数,简称形参int sum=sum1+sum2;return sum;
}int main(){int a=10;int b=10;//调用add函数int sum=add(a+b);//调用时的a,b称为实际参数,简称实参cout<<"sum="<<sum<<endl;a=100;b=100;sum=add(a+b);cout<<"sum="<<sum<<endl;system("pause");return 0;
}

总结:函数定义里小括号内称为形参,函数调用时传入的参数称为实参;

6.4值传递

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

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

示例:

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=10;swap(a,b);cout<<"main中的 a="<<a<<endl;cout<<"main中的 b="<<b<<endl;system("pause");return 0;
}

总结:值传递时,形参是修饰不了实参的

6.5函数的常见样式

常见的函数样式有4种

1无参无返

2有参无返

3无参有返

4有参有返

示例:

//函数常见样式
//1无参无返
void test01(){//void a=10;//无类型不可以创建变量,原因无法分配内存cout<<"this is test01"<<endl;//test01();函数调用
}//2有参无返
void test02(int a){cout<<"this is test02"<<endl;cout<<"a="<<a<<endl;
}
//3无参有返
void test03(){cout<<"this is test03"<<endl;return 10;
}
//4有参有返
void test04(int a,int b){cout<<"this is test04"<<endl;int sim=a+b;return sim;
}

6.6函数的声明

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

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

示例:

//声明可以多次,定义只能一次
//声明
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=100;int b=100;cout<<max(a,b)<<endl;system("pause");return 0;
}

6.7函数的分文件编写

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

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

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

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

3.在头文件中写函数声明

4.在源文件中写函数定义

示例:

//swap.h文件
#include<iostream>
//框架,每个c++文件都需要写
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;temp=b;cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;
}

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

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

相关文章

HASH256开源代码计算错误问题

计算量超500KB报错 OTA升级中可能会涉及到CRC、hash校验等算法&#xff0c;小编从网上抄到了HASH256的源码&#xff0c;拿来使用的时候却发现了一个问题&#xff0c;当源文件约大于500KB的时候会发现其计算出的hash值出现错误。 经过实际测试得知&#xff0c;当源文件大于约50…

【人工智能】Python常用库-TensorFlow常用方法教程

TensorFlow 是一个广泛应用的开源深度学习框架&#xff0c;支持多种机器学习任务&#xff0c;如深度学习、神经网络、强化学习等。以下是 TensorFlow 的详细教程&#xff0c;涵盖基础使用方法和示例代码。 1. 安装与导入 安装 TensorFlow&#xff1a; pip install tensorflow…

Spring Boot教程之十一:获取Request 请求 和 Put请求

如何在 Spring Boot 中获取Request Body&#xff1f; Java 语言是所有编程语言中最流行的语言之一。使用 Java 编程语言有几个优点&#xff0c;无论是出于安全目的还是构建大型分发项目。使用 Java 的优点之一是 Java 试图借助类、继承、多态等概念将语言中的每个概念与现实世…

uniapp实现组件竖版菜单

社区图片页面 scroll-view scroll-view | uni-app官网 (dcloud.net.cn) 可滚动视图区域。用于区域滚动。 需注意在webview渲染的页面中&#xff0c;区域滚动的性能不及页面滚动。 <template><view class"pics"><scroll-view class"left"…

Vue教程|搭建vue项目|Vue-CLI2.x 模板脚手架

一、项目构建环境准备 在构建Vue项目之前&#xff0c;需要搭建Node环境以及Vue-CLI脚手架&#xff0c;由于本篇文章为上一篇文章的补充&#xff0c;也是为了给大家分享更为完整的搭建vue项目方式&#xff0c;所以环境准备部分采用Vue教程&#xff5c;搭建vue项目&#xff5c;V…

Rust面向对象特性

Rust的面向对象特性 本文已同步至自建博客 Rust在设计的时候受到很多编程范式的影响&#xff0c;包括面向对象。面向对象的语言共有一些共同的特征&#xff0c;即对象、封装和继承。 封装 一个对象的实现细节对使用该对象的代码不可访问。因此&#xff0c;对象交互的唯一方…

前海湾地铁的腾通数码大厦背后的临时免费停车点探寻

临时免费停车点&#xff1a;前海湾地铁的腾通数码大厦背后的桂湾大街&#xff0c;目前看不仅整条桂湾大街停了​车&#xff0c;而且还有工地餐点。可能是这个区域还是半工地状态&#xff0c;故暂时还不会有​罚单的情况出现。 中建三局腾讯数码大厦项目部A栋 广东省深圳市南山…

Python知识分享第十五天

“”" 细节: 1.如下定义的类的几种写法 并无任何区别 最终效果都一样 只是写法不同 2.所有的类都直接或间接继承自object 它是所有类的父类 定义类的格式 格式1 class 类名: pass 格式2 class 类名(): pass 格式3 class 类名(父类名): pass “”" # 需求: 通过上述…

遥感数据集:FTW全球农田边界和对应影像数据,约160万田块边界及7万多个样本

Fields of The World (FTW) 是一个面向农业田地边界实例分割的基准数据集&#xff0c;旨在推动机器学习模型的发展&#xff0c;满足全球农业监测对高精度、可扩展的田地边界数据的需求。该数据集由kerner-lab提供&#xff0c;于2024年8月28日发布&#xff0c;主要特征包括&…

USB Type-C一线通扩展屏:多场景应用,重塑高效办公与极致娱乐体验

在追求高效与便捷的时代&#xff0c;启明智显USB Type-C一线通扩展屏方案正以其独特的优势&#xff0c;成为众多职场人士、娱乐爱好者和游戏玩家的首选。这款扩展屏不仅具备卓越的性能和广泛的兼容性&#xff0c;更能在多个应用场景中发挥出其独特的价值。 USB2.0显卡&#xff…

项目二技巧一

目录 nginx实现根据域名来访问不同的ip端口 配置Maven私服 快照版和发布版的区别 快照版本&#xff08;Snapshot&#xff09; 发布版本&#xff08;Release&#xff09; 导入发布版的父工程 理清楚授权规则 一.首先浏览器发送/manager/**路径请求 第二步&#xff1a;构造…

如何更好地设计SaaS系统架构

SaaS&#xff08;Software as a Service&#xff09;架构设计的核心目标是满足多租户需求、支持弹性扩展和高性能&#xff0c;同时保持低成本和高可靠性。一个成功的SaaS系统需要兼顾技术架构、资源利用、用户体验和商业目标。本文从以下几个方面探讨如何更好地设计SaaS系统架构…

手搓一个不用中间件的分表策略

场景&#xff1a;针对一些特别的项目&#xff0c;不用中间件&#xff0c;以月为维度进行分表&#xff0c;代码详细设计方案 1. 定义分片策略 首先&#xff0c;定义一个分片策略类&#xff0c;用于决定数据存储在哪个分表中 import java.time.LocalDate; import java.time.fo…

详解SpringCloud集成Camunda7.19实现工作流审批(二)

本章将分享的是camunda流程设计器--Camunda Modeler的基本使用&#xff08;对应camunda版本是7.19&#xff09;&#xff0c;包括bpmn流程图画法&#xff0c;各种控件使用以及一些日常业务场景的流程图的实现 参考资料&#xff1a; Camunda BPMN 基础组件-CSDN博客 Camunda: Exe…

webpack(react)基本构建

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。它的主要功能是将各种资源&#xff08;如 JavaScript、CSS、图片等&#xff09;视为模块&#xff0c;并将它们打包成一个或多个输出文件&#xff0c;以便…

html select下拉多选 修改yselect.js插件实现下拉多选,搜索,限制选中,默认回显等操作

需求&#xff1a;要在select标签实现下拉多选&#xff0c;搜索&#xff0c;限制选中&#xff0c;默认回显等操作&#xff0c;之前同事用的yselect.js&#xff0c;网上用的简直是寥寥无几&#xff0c;找了半天没找到限制选中的方法&#xff0c;看了源代码才发现根本没有&#xf…

c++哈希表(原理、实现、开放寻址法)适合新手

c系列哈希的原理及实现&#xff08;上&#xff09; 文章目录 c系列哈希的原理及实现&#xff08;上&#xff09;前言一、哈希的概念二、哈希冲突三、哈希冲突解决3.1、开放寻址法3.2、删除操作3.3、负载因子四、代码实现 总结 前言 红黑树平衡树和哈希有不同的用途。 红黑树、…

了解HTTPS以及CA在其中的作用

在这个信息爆炸的时代&#xff0c;每一次指尖轻触屏幕&#xff0c;都是一次数据的旅行。但您是否真正了解&#xff0c;这些数据在通往目的地的旅途中&#xff0c;是如何被保护的呢&#xff1f; HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是一种安全的网…

electron-vite_14窗口默认全屏铺满

有时候应用打包后&#xff0c;希望全屏显示;而默认的宽度和高度,是无法满足的;这时需要单独处理; 核心代码 // 1.引入screen对象 import { BrowserWindow, screen } from electron; function createWindow(): void {// 2.获取屏幕尺寸const { width, height } screen.getPrim…

mysql-为什么需要线程池

mysql-为什么需要线程池 MySQL线程池的概述与应用 MySQL线程池是MySQL数据库中的一个重要组件&#xff0c;旨在提高数据库的性能、吞吐量和可伸缩性。它通过管理数据库服务器的线程生命周期&#xff0c;减少了线程的创建和销毁的开销&#xff0c;并通过优化资源使用&#xff…