zoukankan      html  css  js  c++  java
  • C语言基础-函数

    自创函数

    C语言提供了大量的库函数: 比如 stdio.h 提供输出函数

    自定义函数的一般形式:

    注意:

    1. [] 包含的内容可以省略,数据类型说明省略,默认是 int 类型函数; 参数省略表示该函数是无参函数,参数不省略表示该函数是有参函数;
    2. 函数名称遵循标识符命名规范;
    3. 自定义函数尽量放在 main 函数之前,如果要放在main函数后面的话, 需要在main函数之前先声明自定义函数,声明格式为:
      [数据类型说明] 函数名称([参数]);

    函数调用 

    我们需要用到自定义的函数的时候,就得调用它,那么在调用的时候就称之为函数调用

    在C语言中,函数调用的一般形式为:

    函数名([参数]); 

    注意:

    • 对无参函数调用的时候可以将()包含的省略
    • ()中可以是常数,变量或其它构造类型数据及表达式,多个参数之间用逗号分隔。

    有参与无参

    在函数中不需要函数参数的称之为无参函数,在函数中需要函数参数的称之为有参函数。

    有参和无参函数的一般形式如下:

    有参函数和无参函数的唯一区别在于:函数 () 中多了一个参数列表。

    • 有参函数更为灵活,输出的内容可以随着n的改变而随意变动,只要在main函数中传递一个参数就可以了
    • 而在无参函数中输出的相对就比较固定,当需要改动的时候还需要到自定义的方法内改变循环变量的值。

    形参与实参

    函数的参数分为形参实参两种。

    • 形参是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传入的参数。
      • 就类似小明,说了的话而不实际行动;
    • 实参是在调用时传递该函数的参数。
      • 就如小刚能实际行动起来。

    函数的形参和实参具有以下特点:

    • 形参只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部有效。
    • 函数调用结束返回主调函数后则不能再使用该形参变量。

      

    • 实参可以是常量、变量、表达式、函数等。
    • 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值等办法使实参获得确定值。
    • 在参数传递时,实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配的错误。

     

    函数的返回值

    函数的返回值是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。

    函数的返回值要注意以下几点:

    • 函数的值只能通过return语句返回主调函数。
    return 表达式 或者为: return (表达式);
    • 函数值的类型和函数定义中函数的类型应保持一致。
      • 如果两者不一致,则以函数返回类型为准,自动进行类型转换。
    • 没有返回值的函数,返回类型为 void

    注意:

    • void 函数中可以有执行代码块,但是不能有返回值.
    • void函数中如果有return语句,该语句只能起到结束函数运行的功能。其格式为: return;

    内部函数与外部函数

    • 在C语言中不能被其他源文件调用的函数称谓内部函数 ,内部函数由static关键字来定义,因此又被称谓静态函数,形式为:
      static [数据类型] 函数名([参数])
    • 这里的static是对函数的作用范围的一个限定,限定该函数只能在其所处的源文件中使用,因此在不同文件中出现相同的函数名称的内部函数是没有问题的。
    • 在C语言中能被其他源文件调用的函数称谓外部函数 ,外部函数由extern关键字来定义,形式为:
      extern [数据类型] 函数名([参数])
    • C语言规定,在没有指定函数的作用范围时,系统会默认认为是外部函数,因此当需要定义外部函数时extern也可以省略。

    静态变量只赋值一次

    外部函数练习

     hello.c

    #include <stdio.h>
    #include "test.c"   //引用test.c文件
    extern void printLine()     //这里定义的方法对吗?
    {
       printf("**************
    ");   
    }
    int main()
    {
        say();
        return 0;
    }

    test.c

    #include <stdio.h>
    void printLine();
    static void say(){
    printLine();
    printf("I love imooc
    ");
    printf("good good study!
    ");
    printf("day day up!
    ");
    printLine();
    }
    

    对于hello.c来说,直接引入了test.c文件。那么就可以调用testc中的static方法say()
    而对于test.c并没有引入,可以通过声明来调用另一个源文件中暴露出来的方法。

    输出:

    **************
    I love imooc
    good good study!
    day day up!
    ****************************
    I love imooc
    good good study!
    day day up!
    **************
    Songzhibin
  • 相关阅读:
    发送邮件
    C#操作Excel总结
    注意!监控MySQL服务是否正常,懂这4种方法就可以了
    Linux磁盘空间爆满怎么办?定时文件清理脚本配置实现
    Linux 服务器必备的安全设置,建议收藏!
    MySQL入门到精通:MySQL 选择数据库
    TIOBE3月榜单公布!C 语言稳居第一,将新增功能,消除差异
    C++如何读取带空格字符串?这5种方法教会你
    C语言丨二分查找算法详解(含示例代码)
    线上故障了!居然是因为Linux磁盘缓存机制导致的
  • 原文地址:https://www.cnblogs.com/binHome/p/12763085.html
Copyright © 2011-2022 走看看