当前课程知识点:C语言程序设计 >  第8章 函数 >  8.2 有参函数 >  有参函数

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

有参函数在线视频

下一节:函数参数的传递形式

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

有参函数课程教案、知识点、字幕

同学们大家好

今天我们来讲有参函数

分为有参数无返回值和有参数有返回值的函数

首先来看有参数无返回值的函数

其定义格式为

void 函数名 (类型符1 形参名1

类型符2 形参名2

… 类型符n 形参名n )

其中参数个数可以任意

{ 变量声明部分 执行部分 } 其中

其中括号里的内容为参数列表

类似于变量的定义

这个变量

我们把它叫做形参

即形式参数

多个参数之间用逗号隔开

且不允许对形参变量赋初值

这类函数的用途是

根据形参的值来进行某种事务的处理

灵活性上要比无形参的函数强

此类函数的原型声明是

void 函数名(类型符1 形参名1

类型符2 形参名2

或 void 函数名(类型符1 类型符2

… 类型符n )

也就是说申明函数时函数的形参名称是可以省略的

此类函数的调用形式是

函数名( 实参1实参2……实参n )

实参的个数要与形参的个数相同

需要说明的是

第一实参指的是实际参数可以是常量

变量表达式函数等

第二实参列表中的实参必须与函数定义时的

形参数量相同类型相符

第三赋值对应关系是

实参1 的值 赋值给 形参1 实参2的值 赋值给 形参2

…… 实参n的值 赋值给 形参n 第四

也就是说它们是一一对应的

第四实参表求值顺序

即实参赋值给形参的顺序

因系统而定TC BC VC均是自右向左

也就是说最右边的实参最先赋值给最右边的形参

最左边的实参最后赋值给最左边的形参

但VC与TC

BC在具体赋值时稍有不同

注意它们之间的区别

例如这个程序中定义了compare函数

比较两个数的大小

并输出比较结果

而main函数传递的参数是i和i++

i的初值为2

这个程序在TC或BC下的运行结果为

a = 3 b = 2 a > b i = 3 而在VC下的运行结果是

a = 2 b = 2 a = b i = 3 可以看到

运行结果是不同的

TC或BC输出了a>b

而VC输出了a=b的结果

其原因是

两种环境下

实参i++的值传递给形参b时

b均得到2的值

但在TC或BC下

实参i++的值传递给形参b之后

立即进行了加1操作

使得i的值变为3

然后将其传递给形参a

所以a的值得到3

而在VC下

实参i++的值传递给形参b之后

没有立即进行加1操作

使得i的值仍然为2

然后将其传递给形参a

所以a的值得到2

函数调用结束后才将i的值进行加1操作

使得i的值变为3

下面看有参数有返回值的函数

其定义格式是

返回值类型符 函数名 (类型符1 形参名1

… … 类型符n 形参名n )

{ 变量声明部分 执行部分 } 此类函数的用途是

此类函数根据形参的值来进行某种事务的处理

同时可将处理后的结果值返回给调用函数

它最能体现调用函数与被调函数之间的数据联系

此类函数原型声明格式为

返回值类型符 函数名(类型符1 形参名1

…… 类型符n 形参名n )

或 返回值类型符 函数名(类型符1 类型符2

…… 类型符n )

也就是说函数声明时形参的名称是可以省略的

下面看有参数有返回值的函数的调用

其调用格式为

函数名( 实参1实参2

…… 实参n )

或 变量名 = 函数名( 实参1实参2

……实参n )

例如

下列程序中

用于求两个数的最大值

主函数中输入两个数存入a和b

然后通过语句c = max (ab);

来求得两个数的最大值

并赋值给c

最后输出结果

以输入为5 9为例

运行结果为

the biggest number is 9 需要说明的是

函数调用表达式

既可以作为另一个表达式的一部分

又可以作为另一个函数调用的参数出现

例如

函数调用作为表达式的一部分

的一种典型写法m = max (ab) * 2;

意思是将max(a,b)函数的调用结果乘以2

再赋值给m另外一种情况

 函数调用作为函数参数的情况

例如printf (%dmax(ab)); m = max (amax(bc));

意思是将函数调用max(a,b)的返回值返回结果

直接传递给printf输出

下面的语句 m = max (amax(bc));

它的意思是将max(b,c)的调用结果

再作为max函数的参数

同a一同作为max函数来去调用这个max函数

最后求得顺序就是先求b 和c得最大值

求得最大值后再跟a去求一个最大值

作为最外层max函数得返回值赋值给m

好同学们今天的内容就讲到这里 我们下次再见

C语言程序设计课程列表:

第1章 C语言程序设计预备知识

-计算思维与计算机

--计算思维与计算机

--计算思维与计算机

--计算思维和计算机

第2章 C语言程序设计基础

-2.1 程序设计语言的发展及其特点和应用

--程序设计语言的发展及其特点和应用

--程序设计语言的特点及发展

- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤

-- C语言程序的基本结构及编制C语言程序的基本步骤

--C语言程序的结构和编制步骤

第3章 基本数据类型、运算符与表达式

-3.1 C语言的数据类型

--C语言的数据类型

--C语言的数据类型

-3.2 常量

--常量

--常量

-3.3 什么是变量

--什么是变量

--什么是变量

-3.4 如何进行算术运算

--如何进行算术运算

--如何进行算术运算

-3.5 赋值运算符和逗号运算符

--赋值运算符和逗号运算符

--赋值运算符和逗号运算符

-3.6 数据类型转换

--数据类型转换

--数据类型转换

第4章 基本输入输出和顺序程序设计

-4.1 格式化输出printf

--格式化输出printf

--格式化输出

-4.2 格式化输入scanf及字符数据的非格式化输入输出

--格式化输入scanf及字符数据的非格式化输入输出

--格式化输入

第5章 选择结构程序设计

-5.1 关系运算符和关系表达式

--关系运算符和关系表达式

--关系运算符和关系表达式

-5.2 逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

-5.3 条件运算符和条件表达式

--条件运算符和条件表达式

--条件运算符和条件表达式

-5.4 if语句

--if语句

--if语句

-5.5 switch语句

--switch语句

--switch语句

第6章 循环结构程序设计

-6.1 while语句

--while语句

--while语句

--do-while语句

-6.2 for语句

--for语句

--for语句

-6.3 循环的嵌套

--循环的嵌套

--循环的嵌套

-6.4 break语句和continue语句

--break语句和continue语句

--break和continue语句

第7章 数组

-7.1 一维数组的定义和引用

--一维数组的定义和引用

--一维数组的定义和引用

-7.2 一维数组的赋值

--一维数组的赋值

--一维数组的赋值

-7.3 二维数组的定义和引用

--二维数组的定义和引用

--二维数组的定义和引用

-7.4 二维数组的赋值

--二维数组的赋值

--二维数组的赋值

-7.5 字符串的本质

--字符串的本质

--字符串的本质

-7.6 字符串操作的常用函数

--字符串操作的常用函数

--字符串常用函数

-7.7 字符串数组

--字符串数组

--字符串数组

第8章 函数

-8.1 函数概述

--函数概述

--函数概述

-8.2 有参函数

--有参函数

--有参函数

-8.3 函数参数的传递方式

--函数参数的传递形式

--函数参数的传递方式

-8.4 变量的作用域和生存期

--变量的作用域和生存期

--变量的作用域和生存期

-8.5 变量的存储类型

--变量的存储类型

--变量的存储类型

-8.6 函数的嵌套和递归调用

--函数的嵌套和递归调用

--函数的嵌套和递归调用

-8.7 函数的作用域与封装

--函数的作用域与封装

--函数的作用域与封装

第9章 指针

-9.1 指针变量的概念(上)

--指针变量的概念(上)

--指针变量的概念(上)

-9.2 指针变量的概念(下)

--指针变量的概念(下)

--指针变量的概念(下)

-9.3 指向一维数组的指针变量

--指向一维数组的指针变量

--指向一维数组的指针变量

-9.4 指向二维数组的指针变量(上)

--指向二维数组的指针变量

--指向二维数组的指针变量(上)

-9.5 指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

-9.6 动态内存分配

--动态内存分配

--动态内存分配

第10章 预处理命令

-10.1 编译预处理

--编译预处理

第11章 复杂数据类型

-11.1 用户自己建立数据类型

--用户自己建立数据类型

--用户自己建立数据类型

-11.2 定义结构体类型变量

--定义结构体类型变量

--定义结构体类型变量

-11.3 结构体变量的引用与初始化

--结构体变量的引用与初始化

-11.4 结构体数组

--结构体数组

--结构体数组

-11.5 指向结构体类型数据的指针

--指向结构体类型数据的指针

--指向结构体类型数据的指针

第12章 文件

-12.1 文件的基本概念和文件指针

--文件的基本概念和文件指针

--文件的基本概念和文件指针

-12,2 文件的打开和关闭

--文件的打开和关闭

--文件的打开和关闭

-12.3 文本文件读写

--文本文件读写

--文本文件读写

-12.4 二进制文件读写

--二进制文件读写

--二进制文件读写

有参函数笔记与讨论

也许你还感兴趣的课程:

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