zoukankan      html  css  js  c++  java
  • 函数02 零基础入门学习C语言33

    第七章:函数02

     

    让编程改变世界

    Change the world by program


     

    关于形参与实参的一些重要说明:

      1) 在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。 只有在发生函数调用时,函数 max 中的形参才被分配内存单元。 在调用结束后,形参所占的内存单元也被释放。   2) 实参可以是常量、变量或表达式,如:

    max(3, a+b);

    但要求它们有确定的值。在调用时将实参的值赋给形参。   3) 在被定义的函数中,必须指定形参的类型。   4) 实参与形参的类型应相同或赋值兼容。如果实参为整型而形参x为实型,或者相反,则按第3章介绍的不同类型数值的赋值规则进行转换。 例如实参值a为3.5,而形参x为整型,则将实数3.5转换成整数3,然后送到形参b。字符型与整型可以互相通用。   5) 在C语言中,实参向对形参的数据传递是“值传递”(相当于COPY),单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。 [caption id="attachment_119" align="aligncenter" width="296"] 函数的形参和实参[/caption]   在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。 因此,在执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数的实参的值。 例如,若在执行函数过程中x和y的值变为10和15,而a和b仍为2和3。 [caption id="attachment_120" align="aligncenter" width="295"] 函数的形参和实参[/caption]

    函数的返回值

      通常,希望通过函数调用使主调函数能得到一个确定的值,这就是函数的返回值。 例如,max(2, 3)的值是3,max(5, 2)的值是5。赋值语句将这个函数值赋给变量c。

    关于函数返回值的一些说明:

    1) 函数的返回值是通过函数中的return语句获得的: return语句将被调用函数中的一个确定值带回主调函数中去。 如果需要从被调用函数带回一个函数值供主调函数使用,被调用函数中必须包含return语句。 如果不需要从被调用函数带回函数值可以不要return语句。   一个函数中可以有一个以上的return语句,执行到哪一个return语句,哪一个语句起作用。return语句后面的括弧也可以不要, 如: “return z;” 等价于 “return (z);” return后面的值可以是一个表达式。 如: [codesyntax lang="c"]
    int max( int x, int y )
    {
        return ( x > y ? x : y );
    }
    [/codesyntax]   2) 函数的返回值应当属于某一个确定的类型,在定义函数时指定函数返回值的类型。 例如:下面是3个函数的首行:

    int max(float x,float y) /* 函数值为整型 */

    char letter(char c1,char c2) /* 函数值为字符型 */

    double min(int x,int y) /* 函数值为双精度型 */

    特别提示: 在C语言中,凡不加类型说明的函数,自动按整型处理。 例中的max函数首行的函数类型int可以省写,用Turbo C 2.0编译程序时能通过,但用Turbo C++ 3.0编译程序时不能通过,因为C++要求所有 函数都必须指定函数类型。 因此,建议在定义时对所有函数都指定函数类型。   3) 在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致。 如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。对数值型数据,可以自动进行类型转换。即函数类型决定返回值的类型。   4) 对于不带回值的函数,应当用“void”定义函数为“无类型”(或称“空类型”)。 这样,系统就保证不使函数带回任何值,即禁止在调用函数中使用被调用函数的返回值。 此时在函数体中不得出现return语句。

    返回值类型与函数类型不同

    [codesyntax lang="c"]
    #include <stdio.h>
    
    void main()
    {
        int max(float x, float y);
        float a, b;
        int c;
    
        scanf("%f,%f", &a, &b);
        c = max(a, b);
        printf("Max is %d n", c);
    }
    
    int max(float x, float y)
    {
        float z;
        z = x > y ? x : y;
        return z;
    }
    [/codesyntax] [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LSKNRPJUOGOB']视频下载[/Downlink]
  • 相关阅读:
    part11-1 Python图形界面编程(Python GUI库介绍、Tkinter 组件介绍、布局管理器、事件处理)
    part10-3 Python常见模块(正则表达式)
    Cyclic Nacklace HDU
    模拟题 Right turn SCU
    状态DP Doing Homework HDU
    Dp Milking Time POJ
    区间DP Treats for the Cows POJ
    DP Help Jimmy POJ
    Dales and Hills Gym
    Kids and Prizes Gym
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3846962.html
Copyright © 2011-2022 走看看