• 实验6总结


    1.函数概述:

    • 函数→function→功能,函数就是能完成一定功能的程序段。
    • 如果程序规模不大,只需一个主函数和基本的库函数即可。
    • 否则,用户需要编写能实现一定功能的子函数。

    2.函数的功能:

    • 主函数就像一个控制面板,子函数就像控制面板上的按钮。
    • 每个子函数可以实现功能。
    • 子函数可以减少重复编写程序段的工作量。
    • 同一个子函数可以被一个或多个函数多次调用。

    3.函数使用说明:

    • C程序是由一个或多个函数组成。
    • C程序总是从main函数开始执行,而不管将其写在前面、中间或最后。在调用完其它函数后返回到main函数。
    • 子函数相互独立,可以互相调用,但是子函数不可调用主函数。

    4.函数分类:

    • 从用户角度看,C语言函数分为两类:

      (1)库函数(标准函数):是系统提供定义,用户编程时可直接调用。printf(),scanf()。

      (2)用户定义函数:是用户自己编写的用来解决具体问题的函数。cylinder(),max(),PrintStar()。

    • 从函数的形式看,函数分为两类:

      (1)无参函数:不需要向函数传递参数。PrintStar()。

      (2)有参函数:需要向函数传递必要的参数。cylinder(r,h),max(a,b)

    • 从函数有无返回值看,函数分为两类:

      (1)有返回值函数:函数经过运算,得到一个明确的结果,并需要回送该结果。cylinder(r,h),max(a,b)。

      (2)无返回值函数:函数只是完成一系列操作步骤,不需要回送任何运算结果。PrintStar(),PrintMessage()。

    5.函数定义:

      1.函数定义的一般形式:

    类型标识符 函数名(形式参数说明表)→函数首部

    {

      函数实现过程;                       →函数体

    }

      2.函数定义说明:

      (1)类型标识符:

    • 函数的类型,与return语句返回值的类型相同。可以理解为函数最终的结果类型。
    • 可以是任何一种有效的类型,缺省时默认为整型。
    • 若函数无返回值,类型标识符为void。

      (2)函数名:

    • 它的命名要符合C语言的标识符命名规则:由字母、数字和下划线组成,其中第一个字符必须是字母或下划线。
    • 函数名必须唯一,不能与函数体内变量或形参名相同。

      (3)形参表:

    • 形式参数(形参):在定义函数时,函数名后面括号中的变量名。形参是变量,必须指定类型。例如:double cylinder(double r,double h)。
    • 形参主要是用于接受主调函数传递过来的数值。形参类型必须与传递过来的数据类型一致。例如:v=cylinder(radius,height)。
    • 形参的命名只要符合变量的命名规则即可,无需和主调函数中的变量名一致。
    • 每个形参必须单独说明类型,形参间用逗号间隔。
    • 可以不带形参:如果函数无需从主调函数处接收数据,可以不带形参,但是圆括号不能省略。  

    6.函数的调用:

    • 定义完一个函数后,就可以在程序中调用这个函数。
    • 调用标准库函数时,在程序的最前面用#include命令包含相应的头文件。
    • 调用自定义函数时,程序中必须有与调用函数相对应的函数定义。

      1.函数调用的一般格式:

       函数名(实参表)→常量、变量、表达式

    • 实际参数(实参):调用函数时函数名后面括号中的内容。
    • 实参列表中可以含有多个参数,每个参数间用逗号隔开。
    • 实参表中变量和表达式要有确定的值。
    • 实参也可没有,但括号不能省略,如PrintStar()。

      2.函数调用的一般过程:

    • 主函数开始;
    • 遇到主函数调用某个子函数时,主函数被暂停执行;
    • 子函数执行;
    • 执行完后返回主函数;
    • 再从主函数暂停位置处继续执行,直到结束。

      3.函数调用的方式:

    • 函数语句:即把函数调用作为一个语句。如:
       PrintStar();
       printf(“***********”); 
       这时不要求函数带返回值,只要求完成一定的操作,通常将函数定义为“void”类型。
    • 函数表达式:函数出现在可以写表达式的地
            方,此时需要的是函数的值。如:
      c=2*max(a,b);
      printf(“%d”,max(a,b));

      4.函数参数传递说明:

    • 实参可以是常量,变量,表达式,但必须有确定的值
    • 形参是变量,必须指定类型
    • 在参数传递过程中,实参把值复制给形参。
    • C语言中,参数的传递是“值传递”,即单向传递。数据只能由实参传送给形参,而不由形参传回给实参。 
    • 形参和实参一一对应:数量一致,类型一致,顺序一致。
    • 形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放。

      5.函数返回值:

    • 在调用函数时,有时需要将运算结果返回主调函数,此时函数返回值就需要使用return语句实现。
    • return语句形式:
           return   表达式;或者
           return  (表达式);

               例如:    return result; 
                            return 0; 
                            return(x>y?x:y)

    • 若函数无返回值时,函数类型说明为void,且不能略。                                                 如:void PrintStar()
           {printf("****** ");}
      return语句只返回一个值。
    • return语句具有两个功能:
        ①结束函数的运行;
        ②带着运算结果(表达式的值)返回主调函数。
          如果return语句为:return ;
        则表示仅返回到调用函数的调用点,不带返回值。
    • 在一个函数中,return语句可以出现多次,但每次执行只能有一条return语句被执行。

      6.函数声明:

      函数类型 函数名(参数表);
      double cylinder (double r, double h);
      void pyramid (int n);

    • 只写函数定义中的第1行(函数首部),并以分号结束。
    • 函数声明:说明函数的类型和参数的情况,以保证程序编译时能判断对该函数的调用是否正确。
    • 如果是库函数,应在文件开头引用头文件;
    • 如果被调用函数定义在调用它的函数后面
      应在主调函数中对被调函数作声明;
      在所有函数之前对被调函数作声明,此时在主调函数中就不必再作声明了。
    • 如果被调函数定义在调用它的函数的前面,在主调函数之前可以不加声明。

    7.变量与函数:

      1.局部变量和全局

      (1)局部变量

    • 在函数内定义的变量(包括形参)
      作用范围:本函数内部
    • 定义在复合语句内的变量
      作用范围:复合语句内部

      (2)全局变量

    • 在函数以外定义的变量,不从属于任一函数。
      作用范围:从定义处到源文件结束(包括各函数)

      2.变量生命周期和静态局部变量

      (1)自动变量(auto):  普通的局部变量
      int x, y;    auto int x, y;
      char c1;   auto char c1;

    • 函数调用时,定义变量,分配存储单元。
    • 函数调用结束,收回存储单元。

        (2)全局变量:从程序执行开始,到程序的结束,存储单元始终保持。

       (3)变量生命周期:变量从定义开始分配存储单元,到运行结束存储单元被回收的整个过程。

    三、实验心得体会:

    经过这次的实验作业,我发现自己在函数部分掌握的还是比较好的,思路也很清晰。

  • 相关阅读:
    php公立转农历
    php判断客户端浏览器类型
    php为图片添加水印
    php类精确验证身份证号码
    webpack脚手架搭建(简单版)
    《深入浅出Node.js》第4章 异步编程
    js 实现继承相关
    设计模式:观察者模式
    bind 方法实现
    用 CSS 实现字符串截断
  • 原文地址:https://www.cnblogs.com/ly6251/p/6211091.html
Copyright © 2020-2023  润新知