CH06_函数
CH06_函数
概述
作用:将一段可复用的代码封装起来,减少代码重复。
一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。
函数的定义
函数的定义一般主要有5个步骤:
- 返回值类型
- 函数名
- 参数列表
- 函数体语句
- 返回值
语法:
返回值类型 函数名(参数列表){
函数体语句
return 返回值;
}
- 返回值类型:一个函数可以返回一个值
- 函数名:给函数起的名称
- 参数列表:使用该函数时,传入的数据
- 函数体语句:花括号内的代码,函数内需要执行的语句
- return表达式:和返回值类型挂钩,函数执行完后,返回相应的数据。
示例:
int add(int num1, int num2) {
int sum = num1 + num2;
return sum;
}
函数的调用
功能:调用定义好的函数
语法:参数名(参数)
示例:
#include <iostream>
using namespace std;
int add(int num1, int num2) {
int sum = num1 + num2;
return sum;
}
int main() {
int num1 = 15, num2 = 5;
//调用方法
int sum = add(num1, num2);
//显示结构
cout << "结果:" << sum << endl;
system("pause");
return 0;
}
值传递
值传递,就是函数调用时实参将数值传入给形参
值传递时,在方法中对参数改变,对实参不会有任何影响。
示例:
#include <iostream>
using namespace std;
void swap(int num1, int num2) {
int temp = num1;
num1 = num2;
num2 = temp;
cout << "num1:" << num1 << endl;
cout << "num2:" << num2 << endl;
}
int main() {
int num1 = 15, num2 = 5;
//调用前
cout << "num1:" << num1 << endl;
cout << "num2:" << num2 << endl;
cout << "---------------------------" << endl;
//调用方法
swap(num1, num2);
cout << "---------------------------" << endl;
//调用后
cout << "num1:" << num1 << endl;
cout << "num2:" << num2 << endl;
cout << "---------------------------" << endl;
system("pause");
return 0;
}
函数的常见样式
常见形式:
- 无参无返回值
- 有参无返回值
- 无参有返回值
- 有参有返回值
示例:
#include <iostream>
using namespace std;
void fun1() {
cout << "调用了无参无返回值的方法" << endl;
}
void fun2(int num) {
cout << "调用了有参无返回值的方法" << endl;
cout << "参数num:" <<num<< endl;
}
int fun3() {
cout << "调用了无参有返回值的方法" << endl;
cout << "返回值:10" << endl;
return 10;
}
int fun4(int num) {
cout << "调用了有参有返回值的方法" << endl;
cout << "参树:"<<num << endl;
cout << "返回值:" << (num+5) << endl;
return num+5;
}
int main() {
int num = 10;
//fun1();
//fun2(num);
//fun3();
fun4(num);
system("pause");
return 0;
}
函数的声明
作用:告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。
函数的声明可以多次,但是函数的定义只能有一次。
示例:
#include <iostream>
using namespace std;
//函数声明
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 = 10, b = 20;
cout << "最大值:" << max(a, b) << endl;
system("pause");
return 0;
}
函数的分文件编写
作用:让代码结构更加清晰
步骤:
- 创建后缀名为.h的头文件
- 创建后缀名为.cpp的源文件
- 在头文件中写函数的声明
- 在源文件中写函数的定义
示例:
//头文件
#pragma once
#include<iostream>
using namespace std;
//实现两个数字交换的函数的声明
void swap(int a, int b);
#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>
#include "swap.h" //引入头文件
int main() {
//调用方法
swap(10, 20);
system("pause");
return 0;
}
CH06_函数的更多相关文章
- Python 小而美的函数
python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况 any any(iterable) ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- JavaScript权威指南 - 函数
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...
- C++对C的函数拓展
一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...
- 菜鸟Python学习笔记第一天:关于一些函数库的使用
2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...
- javascript中的this与函数讲解
前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...
- 复杂的 Hash 函数组合有意义吗?
很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...
- JS核心系列:浅谈函数的作用域
一.作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. function scope(){ var foo = "global&quo ...
- C++中的时间函数
C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...
- Python高手之路【四】python函数装饰器
def outer(func): def inner(): print('hello') print('hello') print('hello') r = func() print('end') p ...
随机推荐
- 逆向通达信 x 逆向微信 x 逆向Qt
本篇在博客园地址https://www.cnblogs.com/bbqzsl/p/18252961 本篇内容包括: win32窗口嵌入Qt UI.反斗玩转signal-slot.最后 通达信 x 微信 ...
- SpringBoot+mail 轻松实现各类邮件自动推送
一.简介 在实际的项目开发过程中,经常需要用到邮件通知功能.例如,通过邮箱注册,邮箱找回密码,邮箱推送报表等等,实际的应用场景非常的多. 早期的时候,为了能实现邮件的自动发送功能,通常会使用 Java ...
- P6655 题解
直接计数其实不好记,不如计数转期望. 令 \(f_i\) 表示点 \(i\) 成为制高点概率,不难发现期望就是 \(\sum f_i\). 根据定义对于 \(f\) 我们有如下转移 \(f_i = \ ...
- C#开发一个可被带参数调用并返回数据的控制台应用程序
1 标准输出流控制台程序: namespace ReturnConsoleWrite { class Program { static void Main(string[] args) { //程序功 ...
- PowerBuilder现代编程方法X11:PB程序完全跨平台方案
PB可能要支持Windows.macOS.Linux.iOS.Android与鸿蒙操作系统和X86.ARM.RISC-V与国产龙芯CPU的原生应用了! PowerBuilder现代编程方法X11:PB ...
- CF479C 题解
洛谷链接&CF 链接 题目简述 一个人想要安排期末考试的时间. 有 \(n\) 场考试,每场考试有两个时间 \(x_i,y_i\),一个是老师规定的时间,另外一个是他与老师商量好的考试时间. ...
- 回顾 JavaScript
回顾 JavaScript 阅读前建议了解 ECMAScript 是什么? 不然你可能会疑惑下面内容 JavaScript 中掺杂的 ECMAScript 需要大体了解过 JavaScript 主要是 ...
- 从菜鸟到大牛!嵌入式完整学习路线:STM32单片机-RTOS-Linux(文末领取开发板全套资料)
嵌入式系统是许多现代电子设备和智能系统的核心,掌握嵌入式系统,意味着能够设计和开发更加智能化的产品.本文为所有想进入嵌入式领域的初学者提供一个完整系统学习的路线图,按照 "STM32单片 ...
- 搭建lnmp环境-nginx(第一步)
建议: 本次lnmp采用yum形式安装,编译安装过于繁琐,操作不好还不如yum安装,所以不推荐. 全部安装在宿主机上,如果需要安装多个版本的软件才使用docker nginx无所谓版本了 刚安装好系统 ...
- 安卓开发 StateListDrawable 应用
基础部份 StateListDrawable 安卓开发中,如果要做一个按扭按下改变背景,或获取焦点改变背景,最简单的方法是利用将背景指向一个资源,然后果在资源中配置事件,总共分为三步, 1) ...