CH06_函数


概述

作用:将一段可复用的代码封装起来,减少代码重复。

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

函数的定义

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

  1. 返回值类型
  2. 函数名
  3. 参数列表
  4. 函数体语句
  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;
}

函数的常见样式

常见形式:

  1. 无参无返回值
  2. 有参无返回值
  3. 无参有返回值
  4. 有参有返回值

示例:

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

函数的分文件编写

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

步骤:

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

示例:

//头文件
#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_函数的更多相关文章

  1. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  2. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  3. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  4. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

  5. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  6. javascript中的this与函数讲解

    前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...

  7. 复杂的 Hash 函数组合有意义吗?

    很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...

  8. JS核心系列:浅谈函数的作用域

    一.作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. function scope(){ var foo = "global&quo ...

  9. C++中的时间函数

    C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...

  10. Python高手之路【四】python函数装饰器

    def outer(func): def inner(): print('hello') print('hello') print('hello') r = func() print('end') p ...

随机推荐

  1. 华为交换机配置端口模式时报错:Please renew the default configurations

    场景 在华为交换机上使用混杂端口时报这个错,原因是你之前已经将此端口加入了某个vlan 所以你需要undo之前配置的命令 解决方法 sys int G 0/0/1 #替换为报错的端口 undo por ...

  2. Java使用不同方式优雅拆分业务逻辑

    如何处理复杂的业务逻辑 在实际的业务开发当中,经常会遇到复杂的业务逻辑,可能实现出来的代码并没有什么问题,但是代码的可读性很差. 那么在实际开发中如何避免大面积的 if-else 代码块的问题? 补充 ...

  3. Dubbo依赖

    项目依赖 Dubbo依赖 <!--Dubbo依赖--> <dependency> <groupId>com.alibaba</groupId> < ...

  4. 文件系统(九):一文看懂yaffs2文件系统原理

    liwen01 2024.07.07 前言 yaffs 是专为nand flash 设计的一款文件系统,与jffs 类似,都是属于日志结构文件系统.与jffs 不同的是,yaffs 文件系统利用了na ...

  5. Java-JDBC的对象DriverManager,Connection,ResultSet,PreparedStatement,工具类:JDBCUTILS,JDBC控制事务

    1. 概念 Java DataBase Connectivity Java 数据库连接 Java语言操作数据库 JDBC本质:其实是官方(sun)公司的一套操作所有关系型数据库的规则,即接口.各个数据 ...

  6. IDEA之NexChatGPT插件【工欲善其事必先利其器】

    国内有热心的程序员开发了一款NexChatGPT插件,安装后开箱即用十分方便,打字机展示的效果也很流畅,另外插件内还外链了国内能直接访问的ChatGPT,非常推荐试一下,IDEA插件NexChatGP ...

  7. jQuery中hide()和display的区别在于它们实现元素隐藏的方式不同。

    1. hide()方法是jQuery提供的一个函数,用于隐藏元素.当使用hide()方法时,元素会被设置为display:none,即不显示在页面上,但仍然占据着原来的空间.隐藏后的元素可以通过调用s ...

  8. Django REST framework的10个常见组件

    Django REST framework的10个常见组件: 权限组件 认证组件 访问频率限制组件 序列化组件 路由组件 视图组件 分页组件 解析器组件 渲染组件 版本组件

  9. odoo 给form表单视图内联列表添加按钮

    实践环境 Odoo 14.0-20221212 (Community Edition) 代码实现 模块文件组织结构 说明:为了更好的表达本文主题,一些和主题无关的文件.代码已略去 odoo14\cus ...

  10. CCF 无线网络

    题目原文 问题描述(题目链接登陆账号有问题,要从这个链接登陆,然后点击"模拟考试",进去找本题目) 试题编号: 201403-4 试题名称: 无线网络 时间限制: 1.0s 内存限 ...