C语言学习07.函数

作者: 快乐的提千万 | 来源:发表于2017-10-28 14:55 被阅读20次

    函数(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()函数功能相同。

    相关文章

      网友评论

        本文标题:C语言学习07.函数

        本文链接:https://www.haomeiwen.com/subject/xvkspxtx.html