• C/C++——static修饰符


    1. static变量

    static 用来说明静态变量。
    如果是在函数外面定义的,那么其效果和全局变量类似,但是,static定义的变量只能在当前c程序文件中使用,在另一个c代码里面,即使使用extern关键词也不能访问这个static变量。
    如果是在函数内部或代码块内部定义的,那么这个变量只初始化一次,即使再次调用这个函数,这个static变量也不会再次被初始化,于是,这个变量的取值就会一直保存着,也就是说,当你再次调用这个函数的时候,里面用到这个static变量时,就会发现,还是它还是上一次函数调用时的结果。

    static变量在没有显式指定初始值时,由系统一律初始化为0(对于指针是NULL)

    2. static函数

    当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。

    • 内部函数(又称静态函数)

      如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。
      定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,如下所示:
      

    static 函数类型 函数名(函数参数表)
    {……}


      关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。
      使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。

    • 外部函数:

      外部函数的定义:在定义函数时,如果没有加关键字“static”,或冠以关键字“extern”,表示此函数是外部函数:

    [extern] 函数类型 函数名(函数参数表)
    {……}

      调用外部函数时,需要对其进行说明:
      [extern] 函数类型 函数名(参数类型表)[,函数名2(参数类型表2)……];
      [案例]外部函数应用。
      ⑴文件mainf.c
      

    int main()
    { 
        extern void input(…);
        extern void process(...);
        extern void output(...);
    
        input(...);
        process(...);
        output(...);
    }


      ⑵文件subf1.c
      

    ……
    extern void input(...) /*定义外部函数*/
    {……}


      ⑶文件subf2.c
      

    ……
    extern void process(...)    /*定义外部 函数*/
    {……}

      ⑷文件subf3.c
      

    ……
    extern void output(...)    /*定义外部函数*/
    {……}

    参考资料:

    1. https://zhidao.baidu.com/question/586606740.html
    2. 书籍:《C和指针》第二版
  • 相关阅读:
    MySQL >>> 存储引擎
    MySQL >>> 基本操作语句
    MySQL >>> 使用安装
    协程 *单线程实现并发
    进程池 & 线程池
    线程 *知识点扩充
    进程 & 线程
    DRF单表序列化
    DRF
    接口规范
  • 原文地址:https://www.cnblogs.com/oddcat/p/9807696.html
Copyright © 2020-2023  润新知