zoukankan      html  css  js  c++  java
  • 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和指针》第二版
  • 相关阅读:
    Learning ROS for Robotics Programming Second Edition学习笔记(二) indigo tools
    Learning ROS for Robotics Programming Second Edition学习笔记(一) indigo v-rep
    能源企业信息化系统中的典型客户管理数据分析模块展示
    Eclipse搭建Android5.0应用开发环境 “ndk-build”:launchingfailed问题解决
    论制造业的报表开发项目需求
    Ecplise软件Devices看到两个相同设备问题
    jquery pagination分页的两种实现方式
    linux桥接模式下配置静态ip
    linux安装jdk
    linux安装tomcat
  • 原文地址:https://www.cnblogs.com/oddcat/p/9807696.html
Copyright © 2011-2022 走看看