当前课程知识点:C语言程序设计(下) >  第一周:函数(一) >  1.4 函数间参数传递 >  形参与实参值传递

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

形参与实参值传递在线视频

形参与实参值传递

下一节:地址传递-数组名做函数参数

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

形参与实参值传递课程教案、知识点、字幕

在刚才的介绍中

无论是

求水仙花数

还是求素数

还是求一个数的阶乘

当主调函数

调用了被调函数功能的时候

是有参数之间的传递的

那么

如果我们把这种传递

当作一种沟通的话

那c语言

对数据的沟通有什么规定呢

我们从例子开始

比如说在学生管理系统中

考试之后

希望知道谁是第一名

那么就要排序

看看谁排在最前头

在排序的算法中

都会用到两个数据的交换

那如何实现一个函数的调用

来完成两个数值的交换

我们可以编这样的一段程序

为程序函数取个名字

定义两个形参

在函数体内部

定义一个临时变量

交换两个数据的值

主调函数中

我们定义两个整型变量

为它初始化

7 11

为了能够说明

函数调用的结果

我们在函数调用之前

显示一下两个变量的值

函数调用之后

也显示一下两个变量的值

那么

是不是实现了这种调用呢

我们现在把这段程序复制

然后到c语言的环境中

来真实的运行一下看

现在就是这个程序

然后我们为它起名为交换

现在咱们编译

运行看一下

运行的结果

大家注意看

第一次显示的时候是

调用函数之前

x为7 y为11

调用了交换的函数之后

x仍然是7

y仍然是11

这是为什么呢

请大家看

c语言中

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

那么

主调函数中的实参

是以单向的值传递

传给形参

就本题而说

主调函数中

x为7 y为11

调用之前

两个变量有确定的值

调用函数那一时刻

主调函数的实参

传递给被调函数的形参

x7传给a

y11传给b

在被调函数中

a跟b完成了数据的交换

但是

当调用函数结束

返回到主调函数的时候

主调函数中的x和y的值

没有发生任何变化

那么

我们来做一些总结

c语言的函数之间的

数据传递的方式

第一种叫做单项的值传递

函数调用时

主调函数将实参

或实参表达式的值

单向传递给形参

那么

在这种情况下

要求实参和形参必须

类型相同 个数相等 一一对应

可是我们通过前面的例题看到

并不是所有的操作

都可以通过这种

单项的值传递完成

就像两个数据的交换

那么如何解决这样的问题呢

c语言中还有另外的一种

参数传递的方式

叫做地址传递

比如

在函数调用时

将数据的存储地址作为参数

传递给形参

那么此时

形参和实参

就占据了同样的存储单元

这时

在被调函数内

针对实参所做的操作

就可以实现我们需要的结果

那么

此时实参和形参

必须是地址常量

那么

我们现在通过一个例子来看

调用函数

实现数组元素的排序

说到这里

大家先想一想

第一

主调函数和被调函数

实参是什么

形参是什么

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

形参与实参值传递笔记与讨论

也许你还感兴趣的课程:

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