当前课程知识点:C语言程序设计(下) >  第一周:函数(一) >  1.3 函数调用、声明和返回 >  函数调用的过程

返回《C语言程序设计(下)》慕课在线视频课程列表

函数调用的过程在线视频

函数调用的过程

下一节:函数嵌套调用

返回《C语言程序设计(下)》慕课在线视频列表

函数调用的过程课程教案、知识点、字幕

前面我们了解了通过函数可以实现

程序的模块化设计

那么函数的功能

可以实现代码的重复使用

可以缩短程序设计软件开发的周期

那么函数之间相互调用

我们可以从中找到一种分享的乐趣

那现在我们来看

函数的调用又是怎样实现的呢

比如我们求一个三位数

这个三位数上的各个位数的阶乘

再求和 又等于这个数的本身

那么我们把这样的一个问题

抽象出几个具体的问题来

第一

我们把这个三位数上的各个位

分别用a b c来代表

那么一个三位数的数值

这是这三位数本身

接下来 怎么求一个数的阶乘呢

我们可以编程来设计一个函数

求一个数的阶乘

接着我们要求a的阶乘

b的阶乘 c的阶乘

那也就是说

什么叫函数的调用

通过a这个实际的参数

来使用求阶乘这段函数

获得一个结果就是a的阶乘

所以 当定义了一个函数之后

那么主调函数来使用这个

被调函数的功能

叫做函数的调用

下面我们来看

怎样求阶乘

我们定义函数的类型为整型

函数名为f

形参为整型的n

在函数体内定义整型变量i

定义t赋初值为1

变量i循环从1到n

我们都知道阶乘的定义就是

n的阶乘等于1乘2乘3一直乘到n

那么作为变量t

就是来获得指定的数的阶乘的

最后返回的结果就是

给定数据的阶乘

有了这个之后呢 我们再来看如何编

我们给定这个程序

主调函数下定义a b c

分别为三位数的各个位数上的数字

a b c分别从1到9

和从0到9循环

在这个嵌套的循环内

如果a的阶乘加b的阶乘加c的阶乘

等于这个数本身 就是我们要的结果

主调函数的下边

就是我们写的这段功能函数

求阶乘

那么调用的过程又是什么样呢

现在我用不同的颜色来

带着大家看调用的流程

首先 程序运行到if语句的时候

以a作为实参

来调用求阶乘的函数

程序的流程就转向了功能函数内

此时变量a的值传递给了形参n

通过被调函数的运行

获得了a的阶乘

返回到主调函数内调用的位置

再用b的值来调用被调函数

此时b的值传给形参n

那么被调函数调用结束的时候

返回的是b的阶乘

然后再一次

用变量c的值

去调用被调函数

被调函数调用结束

返回c的阶乘

判断此时

a的阶乘加b的阶乘加c的阶乘

是否等于这个数本身

如果是 那正是我们要的结果

这个程序运行结果就是145

我们也可以通过

现实的c语言的编译环境中

运行这个程序来看看

通过刚才的分析

我们已经知道

我们可以在主调函数中

分别调用

被调函数来求一个数的阶乘

那么现在我们就在c语言的

真实的编译环境下

来运行这个程序

看看是不是我们分析的结果

请大家看屏幕

我们在主调函数中定义了三个变量

分别代表了三位数上的各个位

我们对被调函数

也就是求阶乘这个函数做个说明

在主调函数中

方程的循环内

我们调用一个if语句

只要三次调用求阶乘函数的返回值之和

恒等于这个三位数本身的时候

就是我们要的结果

那么在这我们只是看一下

a b c这三个数码

现在咱们就编译

没有问题 运行

现在大家看到

这个程序的运行结果

a b c分别为1 4 5

也就是说这个三位数145

等于1的阶乘加上4的阶乘加上5的阶乘

大家刚才看到了

我们通过调用一个求阶乘的函数

就球出了在三位数中

有这样的一个数

三个为的阶乘等于这个数的本身

那么这是函数调用的一个例子

大家可能问

函数调用都有哪些基本形式呢

我们来做一些小结

主调函数使用被调函数的功能

叫做函数的调用

函数的调用是通过函数名

及其参数表实现的

也就是说主调函数要将

需要被调函数运行的 操作的那些数

给它具体的数值

那么具体的调用方法首先有

第一种形式 就是通过语句的形式

函数名 函数的参数赋予分号

形成一个独立的语句

那么这样的例子有很多

我们从一开始学c语言用的

格式输入函数

格式输出函数

都是这种形式

那么还有一种形式是

我们通过函数调用获得的值

来作为某些表达式的运算分量

比如说

c语言的库函数中数学函数

求幂 a的j次方b的k次方

如果我们希望把两次调用这个函数的结果之和

赋给变量x

那么此时函数的调用就是作为了

算数运算符

算数表达式的运算分量

当然一个函数调用结果还可以作为

其他函数的参数

这下大家看下这个例子

这个求幂的函数的调用结果

作为第二次调用这个函数的参数

C语言程序设计(下)课程列表:

第一周:函数(一)

-1.1 函数定义

--内容简介

--函数是什么

--例题演示

--知识点总结

-1.1 函数定义--作业

-1.2 模块化程序设计

--由生活中的例子介绍模块化概念

--模块化程序设计总结

-1.3 函数调用、声明和返回

--函数调用的过程

--函数嵌套调用

-1.4 函数间参数传递

--形参与实参值传递

--地址传递-数组名做函数参数

--函数返回语句和返回值

--小结

--html

-1.4 函数间参数传递--作业

第二周:函数(二)

-函数递归调用

--6.5.1 递归问题开场白

--6.5.2 递归定义和调用过程

--6.5.3 运行程序

--6.5.4 汉诺塔介绍

--6.5.5 汉诺塔讲解

--6.5.6 汉诺塔程序运行

--6.5.7 递归调用例题

--6.5.8 递归总结

--html

--html

--html

--html

--html

--html

-函数递归调用--作业

第三周:函数(三)

-3.1 变量存储属性

--开场

--局部变量全局变量

--静态存储与动态存储

--存储类别小结

--html

--html

--html

--html

--html

-3.1 变量存储属性--作业

-3.2 编译预处理

--编译预处理开头

--编译预处理内容

--库函数

--函数总结

--综合例子

--html

-3.2 编译预处理--作业

第四周:指针(一)

-4.1 指针的定义、初始化和引用

--本周内容简介

--从变量的地址理解指针(1)

--从变量的地址理解指针(2)

--从数据交换看指针的应用(1)

--从数据交换看指针的应用(2)

--从数据交换看指针的应用(3)

-4.1 指针的定义、初始化和引用--作业

-4.2 指针与数组

--指针与数组

--用指针变量操作数组元素

--用指针变量操作数组元素实例

--Video

-4.2 指针与数组--作业

-虚拟实验:指针的基本概念实验

第五周:指针(二)

-5.1 指针与字符串

--本周开篇介绍

--指针与字符串

--指针与字符串小结

-5.1 指针与字符串--作业

-5.2 多维数组指针

--指针与多维数组

--指针变量访问二维数组

--一维数组的指针变量

--指向数组的指针函数参数

--html

--html

--html

--html

--html

--html

--html

--html

-5.2 多维数组指针--作业

第六周:指针(三)

-6.1指针与函数

--本周开篇介绍

--指针指向函数

--返回指针值的函数

--html

--html

--html

-6.1指针与函数--作业

-6.2指针与指针

--引入指针数组

--指针数组

--二级指针

--指针内容小结

--html

--html

--html

--html

-6.2指针与指针--作业

第七周:链表(一)

-7.1 结构的概念

--Video

--Video

--Video

--Video

--html

--html

-7.1 结构的概念--作业

-7.2 结构数组

--7.2.1 结构体数组

--Video

--Video

--html

-7.2 结构数组--作业

-7.3 结构指针

--Video

--Video

--Video

--html

-7.3 结构指针--作业

-7.4 结构与函数

--Video

--html

-7.4 结构与函数--作业

-7.5 联合

--Video

--Video

--html

-7.5 联合--作业

第八周:链表(二)

-8.1 typedef自定义类型

--自定义类型

-8.1 typedef自定义类型--作业

-8.2 枚举类型

--枚举类型

-8.2 枚举类型--作业

-8.3 链表的概念

--为什么使用链表

--链表的定义和功能

-8.3 链表的概念--作业

-8.4 链表的基本操作

--创建链表的步骤

--创建链表的过程

--访问链表中的节点

--约瑟夫问题

--html

--html

-8.4 链表的基本操作--作业

第九周 文件

-9.1 文件概述

--文件概念

--文件分类

-9.1 文件概述--作业

-9.2 文件型指针

--文件结构与指针

--设备文件

--html

-9.2 文件型指针--作业

-9.3 文件的打开与关闭

--文件读写方式

--文件读写操作

-9.3 文件的打开与关闭--作业

-9.4 文件的顺序读写

--文件顺序读写及字符输入输出

--字符串输入输出

--格式化及数据块输入输出

--html

-9.4 文件的顺序读写--作业

-9.5 文件的随机读写

--文件随机读写

-9.5 文件的随机读写--作业

-9.6 文件检测

--文件检测

-9.6 文件检测--作业

-9.7 文件应用实例

--文件应用实例

--html

--html

第十周 总结与练习

-10.1 C语言知识总结

--程序调试概念

--软件测试方法

--程序跟踪调试

--C语言语法要点

--标识符及运算符

--程序设计流程

--数组、函数及指针

--结构和文件

-10.1 C语言知识总结--作业

-10.2 C语言练习

--程序设计方法

--图像合成例子

--html

期末考试复习题

-期末考试复习题

--html

期末考试复习题答案

-期末考试复习题答案

--html

函数调用的过程笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。