一、C语言函数

1.概念:函数是一组一起执行一个任务的语句,每个c程序都必须有一个main函数,程序员可以把代码划分到不同的函数当中去,在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。c标准库提供了可以大量调用的库函数,比如,printf,strcmp等。

2.函数的定义

c语言中函数的一般定义如下:

return_type Function_name(Parameter List)
{
    The function body
}

在c语言中,函数由一个函数头和一个函数主体组成,组成有以下方面:

  1. 函数名称:上面的函数名称即为max。
  2. 函数的返回类型:一个函数可以返回一个值,这里的max函数的返回值是一个int型的整数,函数也可以没有返回值,例如void max(),void代表该函数是一个没有返回值的函数。

注意函返回类型的值以该函数的返回类型一致,具体表现为:

  1. 函数的参数:当一个函数被调用时可以向该函数的参数传递一个值,这个值叫做实际参数,简称实参,函数的参数叫形式参数,简称形参。当然,一个函数也可以没有参数。
  2. 函数主体:其包括该函数里执行任务的语句,例子中的函数主体就是return a>b?a:b;

下面是一个定义一个比较大小函数的实例:

3.函数在定义时会有两种情况

  1. 在main函数之前定义,程序在这种情况下不需要再main函数里声明。
  2. 在main函数之后定义,这时需要在main函数里声明该函数,比如,声明Max函数时
int main()
{
    int Max(int a,int b);
}

二、函数的调用

1.定义函数时会定义这个函数要做什么,然后通过调用该函数来完成定义的任务。当程序调用函数时,程序控制权会转移给被调用的函数。被调用的函数执行已定义的任务,当函数的返回语句被执行时,或到达函数的结束括号时,会把程序控制权交还给主程序。下面是一个具体调用函数的例子:

2.函数的嵌套调用与递归

  1. 函数的嵌套调用:简单来说就是在一个定义的函数里在调用另一个函数;

下面是一个比较三个数大小的例子:

  1. 函数的递归调用:递归是一种特殊的函数调用方式,简单来说就是在一个函数里再调用它自身为递归调用,函数递归会不断调用自己,每调用自己一次就进入新的一层,当最内层函数执行完后然后一层层向外退出。

以上可以看出递归的代码量比较少,但递归会占用较大的内存,而且运行时间长,所以如果不是什么特殊问题需要用递归解决尽量少用递归。

3.函数的传参

函数传递参数会有两种方式:

1.传值调用:该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。(该方式在函数内部不会改变实参的值),比如下面的例子可以说明这点:

在函数调用过程中,系统会为形参重新申请内存,函数调用完后形参会被释放掉。

2.引用调用:通过指针传递方式,形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作。

 

 

 

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐