当前课程知识点:高级语言程序设计 >  函数 >  7.2 函数的定义 >  函数的定义

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

函数的定义在线视频

函数的定义

下一节:函数的调用

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

函数的定义课程教案、知识点、字幕

大家好

本讲介绍怎样定义一个函数

定义函数时

一定要明确该函数的功能

第二 要定义该函数的接口

也就是函数头部

包括函数名

参数和返回值

最后要定义该函数的功能实现部分

现在来看如何自己定义一个求n的阶乘的函数

左边是一个求阶乘的程序

能够独立运行

右边是求阶乘的函数

没有输入n的语句

也没有输出n的阶乘的语句

只有计算n的阶乘的循环语句

和return语句

来看fact函数的定义

斜杠星号和星号斜杠之间

是介绍函数功能的注释语句

double是返回值类型

fact是函数名

int n是形参表

这是内部变量i和t

这个循环语句用来计算n的阶乘

这是返回n的阶乘

这全部构成了求n的阶乘函数的定义

我们来看一般函数定义的形式

这是函数的头部

这一对花括号是函数体的定界符

花括号里面是函数体

首先要指定函数的名字

函数名是函数的唯一标识

函数名的命名方法

和变量名的命名方法是相同的

要提醒大家注意的是

应该使用一个有意义的名字为函数进行命名

因为一个有意义的名字

可以让我们看到这个名字

就知道这个函数的功能是什么

在定义函数的时候

还要指定函数的入口参数

由参数表指定了函数

从外界接收数据的类型和个数

如果函数不接收任何参数

则参数列表可以定义为void

现在我们还要指定函数返回值的类型

如果不指明返回值类型

编译器将假定返回值是int型

return语句的功能是

结束子函数的运行

返回到调用函数

并将“表达式”的值带给调用函数

return语句中表达式的类型

要和返回值的类型说明一致

如果不一致

则以返回值类型为准进行类型转换

函数没有返回值时

返回值类型为void

函数没有形参时

圆括号里可以是空的

也可以有一个void

这是我们前面写的main函数

经常用到的两种形式

一种main函数没有返回值

一种main函数的返回值类型为整型

下面再来看

如何定义一个判断整数m是否是素数的函数

prime为函数名

有一个整型参数m

返回值类型为void

这是函数体内部语句

判断m是否是素数

用m依次除以2到m-1之间的整数

如果有能除净的

立刻跳出循环

如果都不能除净

在循环条件不成立时也要跳出循环

根据跳出循环的位置

我们可以判断m是否是素数

这个函数 没有返回值

因此return后面没有表达式

请大家将这个函数

与我们之前定义的求阶乘的函数比较比较

看看他们的区别

这两个函数都有一个参数

fact函数有返回值

prime函数没有返回值

现在 我们再来定义一个求两个整数的和的函数

add是函数名

这是两个int型形参x和y

即使这两个形参都是int型

每个形参都要单独说明类型

y前面的int不能省

返回值是整型

再来看这个函数体

这三条语句还可以简写成一条语句

现在我们来看

如何定义计算求x的y次幂的函数

请看这个函数的定义

函数名power

定义两个int型形参x和y

返回值是整型

在函数体里

用这个循环体语句将x累乘到t里

一共累乘了y次

求出x的y次幂

请大家将这个函数

与我们之前定义的求两个数和的add函数比较

两个函数都是定义对两个int型参数x y的操作

返回值也都是整型

但是函数体里的语句序列决定了函数的功能

一个函数是求x的y次方

一个函数是求x与y的和

在C语言中

所有自定义的函数

都必须遵循“先定义后使用”的原则

并且所有的函数定义都是相互平行和独立的

不容许出现嵌套定义

这里add函数的定义

是嵌套在main函数里 是错误的

这样写add函数的定义和main函数的定义

是相互平行和独立的

是正确的

这样写也是错误的

main函数定义和函数a的定义是平行的

但函数b的定义是嵌套在函数a的定义里

也是错误的

正确的写法应该是这样的

main函数

函数a

函数b

这三个函数的定义是平行的

小结一下

本节定义了下列4个函数

这4个函数都是有参函数

有的有一个参数

有的有两个参数

这4个函数中有三个函数有返回值

有一个函数没有返回值

这4个函数都不是单独可运行的

必须被主函数直接或间接调用才能发挥作用

本讲内容就讲到这里

谢谢大家

高级语言程序设计课程列表:

程序设计和C语言

-1.1 计算机程序和计算机语言

--计算机程序和计算机语言

--致敬先辈:伟大的C语言之父——丹尼斯·里奇 程序员

-1.2 C程序的构成

--C程序的构成

--当前主流程序设计语言各自都有什么优势?

-1.3 C语言编辑、编译、运行(VC++2010学习版)

--C语言编辑、编译、运行(VC++2010学习版)

-练习题

顺序结构程序设计

-2.1 变量的定义和使用

--变量的定义和使用

-2.2 数据类型

--数据类型简介

--整型数据

--实型数据

-2.3 格式输出和格式输入

--格式输出printf函数

--格式输入scanf函数

--单个字符的输入输出

-2.4 运算符和表达式

--运算符和表达式

-2.5 结构化程序设计入门

--结构化程序设计入门

-练习题

选择结构程序设计

-3.1 为什么要用选择结构解决问题

--为什么要用选择结构解决问题

-3.2 如何正确表示选择结构中的条件

--如何正确表示选择结构中的条件

-3.3 用if语句及if语句嵌套实现选择结构

--用if语句及if语句嵌套实现选择结构

-3.4 用switch语句实现选择结构

--用switch语句实现选择结构

-练习

循环结构程序设计

-4.1 循环的引入

-- 为什么要用循环结构解决问题

-4.1 循环的引入--作业

-4.2 用while语句实现循环

--用while语句实现循环

-4.3 用do-while语句实现循环

-- 用do-while语句实现循环

-4.4 用for语句实现循环

-- 用for语句实现循环

-4.4 用for语句实现循环--作业

-4.5 何时需要用循环的嵌套

--何时需要用循环的嵌套

-4.6 如何提前终止循环和提前结束本次循环

--如何提前终止循环和提前结束本次循环

-习题--作业

数组

-5.1 数组类型的引入

--数组类型的引入

-5.2 一维数组的定义和初始化

--一维数组的定义和初始化

-5.3 一维数组的使用

--一维数组的使用

-5.4 二维数组的定义和初始化

--二维数组的定义和初始化

-5.5 二维数组的使用

--二维数组的使用

-习题--作业

指针

-6.1 什么是指针

--什么是指针

-6.2 指针类型及相关概念

--指针类型及相关概念

-6.3 指针变量的定义、赋值与使用

--指针变量的定义、赋值与使用

-6.4 指针的运算

--指针的运算

-6.5 指针与一维数组

--指针与一维数组

-6.6 指针的指针

--指针的指针

-6.7 指针与二维数组

--指针与二维数组

-习题--作业

函数

-7.1 为什么要自定义函数

--为什么要自定义函数

-7.2 函数的定义

--函数的定义

-7.3 函数的调用

--函数的调用

-7.4 函数参数的传递

--函数参数的传递

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

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

-7.6 变量的作用域和存储类型

--变量的作用域和存储类型

-习题--作业

字符串

-8.1 字符串的存储及输入输出

--字符串的存储及输入输出

-8.2 系统字符串处理函数

--系统字符串处理函数

-8.3 自定义字符串处理函数

--自定义字符串处理函数

-习题--作业

结构体和共用体

-9.1 结构体类型的定义

--结构体类型的定义

-9.2 结构体变量及指针变量的定义及使用

--结构体类型变量和指针变量的定义和使用

-9.3 结构体变量和指针变量作函数的参数

--用结构体变量和指向结构体的指针作函数参数

-9.4 结构体数组的定义和使用

--结构体数组的定义和使用

-9.5 共用体类型和枚举类型

--共用体和枚举类型

-习题--作业

动态内存分配

-动态内存分配--习题

文件

-习题--作业

函数的定义笔记与讨论

也许你还感兴趣的课程:

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