Osheep

时光不回头,当下最重要。

C语言学习07.函数

函数(function)组成:

  1. 函数名(function name):不能一样,区分大小写。从主函数main开始执行,主函数必须有且只有一个,不然不能主动运行。
  2. 形参列表(parameter list):需要处理的数据,允许为空。
  3. 返回类型(return type):处理完的结果。用return返回返回值,后面的语句不执行,所以只会执行一个return。
  4. 函数体(function body):花括号+语句块。

函数的三个步骤:

  • 函数原型(prototype),即函数声明(functiondeclaration)
  • 函数调用(function call)
  • 函数定义(function definition)

函数(function):实现某个特定功能的代码块(功能模块)

  • 函数之间是独立的,没有从属关系,即函数不能嵌套定义,但是可以嵌套调用。
  • 对排放次序没有限制,但是必须从main开始执行,在main中结束。如果定义在main函数之后需要先声明。
  • 函数=声明部分+执行部分:声明部分不产生操作,不成为语句;执行部分生成指令序列。。

函数分为自定义函数和库函数,main就是老板,库函数就是外援,自定义函数就是员工。

库函数:系统定义好,我们可以直接调用。

比如:类型转换函数、字符判别与转换函数、字符串处理函数、标准I/O函数、文件管理函数、数学运算函数。
库函数的实现代码就在系统提供的库文件中。
时间处理相关的库函数:time(获取系统当前时间戳)
时间戳:距离1970年1月1日0时0分0秒(世界标准时间)(UTC)的秒数,为整数值。

自定义函数:

函数的定义:

函数首部:函数返回值类型+函数名+形参列表。 int main(int argc,char **argv)
函数名也是标识符,所以也是指向函数的首地址的。
形参之间逗号分开,每个都必须有类型说明。
函数定义的时候括号里面的是形参,调用的时候括号里面放的是实参。。

函数返回值:

函数的返回值类型必须和return返回值类型一致。
如果函数没有返回值,指定为void。
返回值的类型默认为int。
一个函数中允许有多个return语句,但每次调用只能有一个return语句被执行名,因此只能返回一个函数值,执行到那一句return哪一句起作用。

函数的声明:

如果函数定义在调用之后,那么在调用之前要先声明函数 。
对函数声明的语句称为函数原型(function prototype)
float mult(float x,float y); 等价于float mult(float ,float ); 只需要说明函数的形参类型和个数就行 。参数名可以不写。

函数的调用:

有参函数:主调函数把实参传送给形参,供被调函数使用。
无参函数:函数定义、函数说明及函数调用中均不带参数,主调函数和被调函数之间不进行参数传递 。
形参的值不影响实参的值 。(在被调函数中,使用的是实参的一个拷贝数据。)
储存单元:调用时开辟,函数返回时消失 。

递归调用:recursion function:自己调用自己的函数
注意:递推关系,递归结束条件

  1. 递归调用不是复制该函数,每次调用时,新的局部变量和形参会在内存中被重新分配内存单元,并以新的变量重新开始执行;每次递归返回时,当前调用层的局部变量和形参被释放,并返回上次调用自身的地方继续执行。
  2. 一般并不节省内存空间,每次调用都要产生一组新的局部变量和形参。
  3. 不能加快执行速度,因为每次都要保护现场。
  4. 优点是可以用迭代算法
函数的退出:

exit()函数和return 语句有什么区别么?

  1. exit()函数在退出程序后会将控制权交回给操作系统
  2. 当通过return语句从一般函数返回时控制权将交给调用该函数的主调函数
  3. 在main()函数中使用return语句返回后,控制权将交给操作系统,
    因此在主函数中return语句的功能与exit()函数功能相同。
点赞