zoukankan      html  css  js  c++  java
  • 初识C语言中的函数(男神翁凯老师MOOC)

    什么是函数?

    函数是一块代码,接收零个或多个参数,做一件事情,并返回零个或一个值。

    可以先想象成数学中的函数:

    y=f(x)

     例如 求begin到end和的函数定义

    void sum(int begin, int end)  // void 为返回类型(不返回任何东西) sum 为函数名 (int begin, int end)为参数表
    ) {
    int i; int sum; for(i=0;i<=end;i++){ sum +=i; } printf("%d到%d的和是%d ",begin, end, sum); }

    调用函数

    函数名(参数表);

    ()起到了表示函数调用的重要作用,即使没有参数也要()

    参数的值会被按照顺序依次用来初始化函数中的参数

    从函数中返回值(单一出口)

    int max (int a , int b)
    {
        int ret;
      if(a>b){
      ret=a;
      }
      else{
      ret=b;
      }
      return ret;
    }

     ●return停止函数的执行,并送回一个值

    ●return;

    ●return 表达式;

    ●可以赋值给变量(c=max(a,b);)

    ●可以再传递给函数(●●●printf("%d ", max(a,b));)

    ●甚至可以丢弃返回值

    没有返回值的函数

    ● void 函数名(参数表)

    不能使用带值的return

    可以没有return

    调用的时候不能返回值的赋值

    函数先后关系

     void sum(int begin, int end)
    {
        int i;
        int sum=0;
        for(i=begin;i<=end;i++){                                        //像这样把sum()写在上面,是因为:C的编译器自上而下顺序分析你的代码
            sum +=i;                                                                
        } 
        printf("%d到%d的和是%d
    ",begin,end,sum);
    }
     int main()
    {
        sum(1,10);
        sum(20,30);
        sum(35,45);
    
        return 0;
    }
    void sum(int begin, int end);//函数的原型声明,原型里可以不写参数的名字,但是一般仍然写上
     int main()
    {
        sum(1,10);
        sum(20,30);
        sum(35,45);
    
        return 0;
    }
    
    
     void sum(int begin, int end)
    {
        int i;
        int sum=0;
        for(i=begin;i<=end;i++){                                        
            sum +=i;                                                                
        } 
        printf("%d到%d的和是%d
    ",begin,end,sum);
    }

    调用函数

    ●如果函数有参数,调用函数时必须传递给它数量 类型正确的值

    ●可以传递给函数的值是表达式的结果,这包括

    ● 字面量               【c=max(10,12);】

    ●变量                     【c=max(a,b);】

    ●函数的返回值      【c=max(max(23,45), a);】

    ●计算的结果         【c=max(23+45,b);】

       类型不匹配?

    ● 调用函数时给的值与参数的不匹配时C语言传统上最大的漏洞

    ● 编译器总是悄悄替你把类型转换好,但是这很可能不是你所期望的

    ● 后续的语言,C++/Java 在这方面很严格

      传过去的到底是什么?

    void swap(int a, int b);
    int main()
    {
        int a=5;
        int b=6;
        swap(a,b);
        printf("a=%d b=%d
    ",a,b);                        ● 这样的代码能交换a和b的值吗?
        return 0;
    }
    void swap(int a, int b)
    {
        int temp =a;
            a=b;
            b=temp;
    }

    C语言在调用函数时,永远只能传值给函数

    ●每个函数都有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系

      本地变量

    函数的每一次运行,就产生一个独立的变量空间,在这个空间中的变量,就是函数所独有的,称为本地变量

    ●定义在函数内部的就是本地变量

    ●参数也是本地变量

    ●对于本地变量,生存期和作用域   大括号内———块(函数的块内 语句的块内)

    ●程序运行进入这个块之前,其中的变量不存在,离开这个块,其中的变量就消失了

    ●块外面定义的变量在里面仍然有效

    ●块里面定义了和外面同名的变量则掩盖了外面的

    ●不能再一个块内定义同名的变量

    ●本地变量不会被默认初始化

    没有参数时

    (void)

    逗号运算符

    ● 调用函数时的圆括号里的逗号时标点符号,不是运算符

    f(a,b)

    f((a,b))

    ●C语言不允许函数的嵌套定义

     

     

  • 相关阅读:
    selenium+python常用函数
    不同网络层的协议与工具
    Loudrunner编写WinSocket接口测试脚本
    python常见问题汇总
    Appium简介及工作原理
    Http协议详解
    Selenium 工作原理
    HTTP与HTTPS有哪些区别?
    【Appium】Appium工作原理(2)
    MySQL 必知必会学习笔记(常用命令二)
  • 原文地址:https://www.cnblogs.com/zhuxuan1997/p/9389949.html
Copyright © 2011-2022 走看看