当前课程知识点:C语言程序设计(下) > 第一周:函数(一) > 1.4 函数间参数传递 > 形参与实参值传递
在刚才的介绍中
无论是
求水仙花数
还是求素数
还是求一个数的阶乘
当主调函数
调用了被调函数功能的时候
是有参数之间的传递的
那么
如果我们把这种传递
当作一种沟通的话
那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语言中还有另外的一种
参数传递的方式
叫做地址传递
比如
在函数调用时
将数据的存储地址作为参数
传递给形参
那么此时
形参和实参
就占据了同样的存储单元
这时
在被调函数内
针对实参所做的操作
就可以实现我们需要的结果
那么
此时实参和形参
必须是地址常量
那么
我们现在通过一个例子来看
调用函数
实现数组元素的排序
说到这里
大家先想一想
第一
主调函数和被调函数
实参是什么
形参是什么
-1.1 函数定义
--内容简介
--函数是什么
--例题演示
--知识点总结
-1.1 函数定义--作业
-1.2 模块化程序设计
-1.3 函数调用、声明和返回
--函数调用的过程
--函数嵌套调用
-1.4 函数间参数传递
--形参与实参值传递
--小结
--html
-1.4 函数间参数传递--作业
-函数递归调用
--html
--html
--html
--html
--html
--html
-函数递归调用--作业
-3.1 变量存储属性
--开场
--局部变量全局变量
--存储类别小结
--html
--html
--html
--html
--html
-3.1 变量存储属性--作业
-3.2 编译预处理
--编译预处理开头
--编译预处理内容
--库函数
--函数总结
--综合例子
--html
-3.2 编译预处理--作业
-4.1 指针的定义、初始化和引用
--本周内容简介
-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 结构数组
--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