黑马程序员技术交流社区

标题: c语言函数 总结 [打印本页]

作者: 谁想去飞    时间: 2014-11-20 21:39
标题: c语言函数 总结
1)基本概念

        一个功能相对独立的代码段

        C的源程序由函数构成,使用函数的好处:
        1)更加灵活
        2)提高代码的重用性
        3)程序更加简洁,有利于多文件开发(模块化编程)

    2)函数的分类

        1)定义角度:系统的库函数 和 用户自定义函数

        2)有无参数:有参数的函数 和 无参数的函数

        3)有无返回值:有返回值函数 和 无返回值函数


3、函数的定义

        格式: 返回值类型  函数名(参数的列表){

                    函数体;

        }

        注意:如果有返回值,可以使用return,返回值

        1)有参 有返回值得函数

          int max(int x,int y,float z){

                return x>y?x:y;
          }


        2)有参 无返回值函数

          void print_x(int x){

               printf("x = %d\n",x);
          }


        3)无参 有返回值函数

          int sum(){

             return 3+3;
          }


        4)无参 无返回值函数

          void print_line(){
     
             printf("-------------\n");

          }

        注意:函数的定义 不能嵌套的

   
4、函数的参数

        参数分为两种:

         形式参数:

              函数名称后面小括号中的参数,就是函数的形式参数,简称形参
  
              int max(int x,int y);    x y  就是形参

              注意:形参在调用之前是不会被分配存储空间


         实际参数:
   
             调用函数的时候,函数名后面的小括号中的参数,简称实参

             max(1,67);    1,67  它就称之为实参

             实参注意事项:

             1)实参可以常量、变量、表达式

             2)实参的类型和形参的类型要一致

             3)实参的顺序和形参的顺序要保持一致

             4)实参和形参的个数要保持一致


5、函数的返回值

          void test(){

               pirntf("xxx");

         }


          void test1(){

               test();
          }

        主调函数:  test1是主调函数,主调函数是相对的概念

        被调函数:test

        函数的返回值:被调函数返回给主调函数的值

        如何让函数返回值:

                return 表达式/常量/变量;  通过return语句可以
        返回给主调函数

                return a*3;
                return a;
                return 32;

        注意:
            1) 如果函数的返回值是void 可以有return语句
  
               格式:return ;

               return 语句之后的语句都不会被执行

            2) 在一个函数中可以有多个return 语句

               起作用的只有一个

               如果有多个return 语句,更多的情况下联合 if来使用的

               目的:根据条件 提前结束函数的执行



6、函数的调用

  
           函数的执行流程:

             先声明函数  ---> 执行函数

           1)如何进行函数的声明?

             格式:   被调函数的返回值  被调函数名(被调函数的参数);

             技巧:  把函数的头部(xxx)拷贝一份,加上个分号

             声明的注意事项:


             1)被调函数写到主调函数之前,免声明

             2)如果函数的返回值是 int 类型,免声明

             3)声明的位置 :函数的内部 ,调用函数之前

                           函数的外部, 优点:在其他函数中不需要声明了

             4)全局的声明的作用域:

                         从声明的位置开始,到文件结束



           2)调用函数

              格式:函数名(实参列表);

                   实参: 常量/变量/表达式/函数

              嵌套调用问题
                  
                   min(min(min(a,b),c),d)



7、递归函数

          在函数的内部又当前函数本身

          int f(int n){

              return  f(n-1);

          }
          // 递归调用的 死循环

          能够构成递归函数的条件:

          1)能够让递归函数调用结束

          2)能够找到一个规律,让问题的规模缩小


          递归的两个阶段:

          1)递推阶段:问题规模缩小的过程

          2)回归计算阶段:当条件满足,递归结束,依次代入值

  
          递归原理:

          在递归阶段,把每一步的结果存放到内存栈(先进后出)中

          从条件满足的时候,从栈顶开始依次出栈。

          所以,基于这个原理,大批量数据计算不适合使用递归,太消耗资源。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2