2018-09-04函数

函数

  • C语言不仅提供了极为丰富的库函数, 还允许用户建立自己定义的函数。用户可把自己的算法编写成一个个相对独立的函数,然后再需要的时候调用它
  • 函数的作用就是实现一个个的功能,比如手机就是一个程序,那么他的一个个功能就是函数,可以说C程序的全部工作都是由各式各样的函数完成的,所以也把C语言称为函数式语言

函数的分类

  • 在C语言中可从不同的角度对函数进行分类
  • 从函数定义的角度看,函数可分为库函数和用户定义函数两种
    定义函数的目的:将一个常用的功能封装起来,方便以后调用

定义函数的步骤
函数名:函数叫什么名字
函数体:函数是干啥的,里面包含了什么代码
返回值类型: 函数执行完毕返回什么和调用者

形式参数
在定义函数时,函数名后面小括号()中定义的变量称为形式参数,简称形参
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。
因此,形参只有在函数内部有效,函数调用结束返回主调函数后则不能再使用该形参变量

实际参数
在调用函数时, 传入的值称为实际参数,简称实参
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参
因此应预先用赋值,输入等办法使实参获得确定值

  • 形参、实参注意点
    1.调用函数时传递的实参个数必须和函数的形参个数必须保持一致
    2.形参实参类型不一致, 会自动转换为形参类型
    3.当使用基本数据类型(char、int、float等)作为实参时,实参和形参之间只是值传递,修改形参的值并不影响到实参函数可以没有形参
  • 返回值类型注意点:
    如果没有写返回值类型,默认是int
    函数返回值的类型和return实际返回的值类型应保持一致。如果两者不一致,则以返回值类型为准,自动进行类型转换
    一个函数内部可以多次使用return语句,但是return语句后面的代码就不再被执行

函数声明

函数声明就是告诉系统我们这个程序里面有这个函数纯在.
一般如果自定义的函数写在了主函数main的前面就不需要进行声明
如果写在了主函数main的后面那么就需要在函数的开始部分进行声明
声明可以写在main里面也可以写在main函数的外面,但最好是写在里面
所以函数声明,就是在函数调用之前告诉系统, 该函数叫什么名称, 该函数接收几个参数, 该函数的返回值类型是什么

函数的声明格式:
将自定义函数时{}之前的内容拷贝到开始部分即可
例如: int max( int a, int b );
或者: int max( int, int );
这两种声明方法都可以


接下来开始练习

1.若定义的函数没有参数,则函数名后的圆括号可以省略(错,不可以省略)
2.C语言程序中的main( )函数必须放在程序的开始部分(错,任意位置)
3.C语言中函数返回值的类型由return语句中的表达式的类型决定(错,函数是什么类型,返回值就是什么类型)
4.return语句作为函数的出口,在一个函数体内只能有一个(错,可以有很多个)
5.C语言的源程序中必须包含库函数(错,不必要)
6.在C函数中,形参可以是变量、常量或表达式(错,不能传常量)
7.在C语言中,一个函数一般由两个部分组成,它们是函数声明和函数实现(错,函数定义和调用)
8.关于函数参数,说法正确的是:实参与其对应的形参各自占用独立的内存单元
形参名称可以和实参同名
9.下列关于自定义函数说法正确的是:函数可以没有返回值
函数可以没有形参列表(切记函数不能没有大括号{})
10.下列关于函数说法正确的是:函数声明时可以不写形参名称
函数返回值和返回值类型不同时,会自动将返回值转换为返回值类型
11.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是
函数调用可以作为一个函数的形参
12.基本类型作为函数参数传递时, 可以在函数内部修改函数外部变量, 这种说法是否正确的(错误的)


递归函数

  • 什么是递归函数?
    一个函数在它的函数体内调用它自身称为递归调用

递归函数构成条件
自己调用自己
存在一个条件能够让递归结束
问题的规模能够缩小

递归和循环区别
能用循环实现的功能,用递归都可以实现
递归常用于"回溯", "树的遍历","图的搜索"等问题
但代码理解难度大,内存消耗大(易导致栈溢出), 所以考虑到代码理解难度和内存消耗问题, 在企业开发中一般能用循环都不会使用递归

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 864评论 0 0
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 326评论 0 0
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,630评论 0 5
  • [经文:林前9:23]凡我所行的,都是为福音的缘故,为要与人同得这福音的好处。 读到保罗,保罗在回答一些问题的时候...
    斐斐feifei阅读 958评论 0 1
  • 我的果果一个多月以前被诊断为重症肺炎、二型呼吸衰竭,在重症监护室住了九天和在普通儿科住了八天以后康复回家,直到今天...
    果果妈201612阅读 1,011评论 11 2