C语言第八章:函数概念递归函数内联函数

Posted 歌咏^0^

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言第八章:函数概念递归函数内联函数相关的知识,希望对你有一定的参考价值。

前言:
        C语言是面向过程的模块化语言

目录

一、函数

二、分类

三、如何设计一个函数

四、函数的几个概念

五、内联函数

 六、静态函数

七、递归函数  

补充知识:



一、函数


        所谓的函数就是 将一系列功能 进行封装,也就是说,函数实际上就是将一块代码进行包装起来。

   
二、分类

        系统函数:   也就是操作系统已经封装好的函数,我们只需要进行调用即可
                        库函数:
                        系统调用接口:----linux内核提供的接口
        自定义函数:程序猿自己封装定义的函数
            
        一次开发:          研究源码: 芯片源码
        1.5次开发:        芯片源码的基础上进行 编程
        二次开发人员:  应用层开发    

三、如何设计一个函数

        1、需求分析
                1)首先你得知道你设计这个函数用来完成什么事情(函数的作用)
                2)完成这个事情需要什么资源-----参数列表
                3)具体实现的过程----函数的源码
                4)最后完成这个事情之后,会反馈一个结果(函数的返回值)
        
        2、格式
                关键字   返回值类型  函数名(参数列表)
                {
                    源码;
            
                    return 返回值;
                }

        函数名:       也就是一块代码的名称,命名使用小驼峰


        参数列表 :   调用这个函数的时候,你需要传递什么样的数据参数

                    数据类型1 变量名1,参数数据类型2 变量名2,参数数据类型3 变量名3

        返回值类型: 函数调用结束之后,返回怎样的数据类型。跟返回值 是 有关关
 

        有返回值
                char  ------ return  'c'
                int   ------- return  100;
                float ------return  10.11;

        无返回值

                void   -----return ;
         例:      
                float func(int a)
                {
                    printf("func\\n");
            
                    return 1.000;
                }    
   
        3、 参数的传递(传参):
                  1)、值传递    2)、地址传递
    
        实际参数(实参): 在调用函数的时候,给这个函数传递的数据(具体的值、地址)    
        形式参数(形参):在定义函数的时候,里面的参数列表。
    

                1)实参和 形参 一定要一一对应
                2)形参一定是由 实参进行初始化

                3) 如果 实参是 变量的名字 或者 某个具体的值 ,称之为 值传递
                4)如果想要在某个函数中改变其他函数的变量的值,需要进行地址传递

        4、特点
                1)在函数里面定义的变量,称之为局部变量。随着函数调用而申请内存空间,函数调用结束之后,就会释放内存空间
                2)增强代码的可读性
                3)降低程序的代码量——实现代码的复用

四、函数的几个概念

        1、函数的定义
                 函数的实现代码块
        2、函数的调用
                利用函数 实现 某个功能模块
        3、函数的声明
                告诉编译器,这个函数长什么样子
                ---函数的声明要放在函数调用之前,一般情况下,放在头文件

        注意:函数定义不允许嵌套


五、内联函数

        1、概念
            由inline关键字修饰的函数,称之为内联函数。类似于宏替换
        2、作用
            减少函数调用的时候 跳转的时间,实际上是用 空间 (程序尺寸增大)为 代价换取时间效
        3、注意
            1)、内联函数一般定义在头文件中,声明也在头文件
            2)、内联函数的代码尽量 5行
        4、用法
            函数频繁被调用
            函数的代码量很少

        inline  int  func()
        {

        }

 六、静态函数

         由关键字 static修饰的函数,称之为静态函数  

         作用:    静态函数 仅限于本文件有效,可以防止一个工程项目中多个.c文件的函数名冲突


、递归函数  

        1、概念
            自己调用自己(直接或者间接调用本身),称之为递归函数

        2、设计
            (1)问题模型本身要符合递归模型(递推模型)
            (2)问题的解,当递归到一定层次时,答案是显而易见的,且能结束函数。
            (3)先明确函数要实现的功能与参数的关系,暂不管功能具体的实现。
            (4)呈现第n层与第n-1层的递推关系 

        3、注意
            1)递归函数一定要有一个终止条件
            2)递归函数不能嵌套太深

补充知识:

                  1. .dll后缀名——封装成库函数,将源代码文件名改为.dll后缀,可起到保密作用

                  2. ctrl + f :查找相同词

                  3.system("clear")——执行linux命令  -----》 头文件 <stdlib.h>

                  4.头文件:#ifndef     //如果没有定义这个宏,执行下面

                                  #define    // 定义这个宏

                                        。。。。。(放头文件、变量声明、函数声明、函数定义等)

                                  #endif

                            作用:防止头文件重复展开  

以上是关于C语言第八章:函数概念递归函数内联函数的主要内容,如果未能解决你的问题,请参考以下文章

C语言-内联函数递归函数指针函数

内联函数

C语言进阶——内联汇编

C语言进阶——内联汇编

C++之内联函数

C++入门基础