zoukankan      html  css  js  c++  java
  • 关键字static在标准C/C++的作用

    static总结:根据作用域,存储域,生命周期3点来说

      static含义: 是C/C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。

      (1)标准C语言中,static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0。

        1、隐藏指的是作用域的区别,如果此函数或者变量被static关键字修饰

            a、修饰的是局部变量,那么只能在函数内可见(可使用)。

            b、修饰的是全局变量或函数,那么只能在当前文件下可见。其他的文件即使用extern声明也不能使用

        2、存储域

            a、static函数在内存中只有一份,普通函数在每次调用中都有一份拷贝。

            b、如果变量有初始化,那么会存储在全局数据区。未被初始化,会被存储在静态数据区,系统会自动赋予0值

        3、生命周期

            当程序开始时初始化,也是唯一一次,此变量创建直到程序结束

      (2)标准C++语言中

        静态变量:

            (1)静态数据成员可以实现多个对象之间的数据共享,它是类的所有对象的共享成员,它在内存中只占一份空间,如果改变它的值,则各对象中这个数据成员的值都被改变。 
            (2)静态数据成员是在程序开始运行时被分配空间,到程序结束之后才释放,只要类中指定了静态数据成员,即使不定义对象,也会为静态数据成员分配空间。 
                           (3)静态数据成员可以被初始化,但是只能在类体外进行初始化,若未对静态数据成员赋初值,则编译器会自动为其初始化为0 
                           (4)静态数据成员既可以通过对象名引用,也可以通过类名引用。

         静态成员: 

          (1)静态成员函数和静态数据成员一样,他们都属于类的静态成员,而不是对象成员。 
          (2)非静态成员函数有this指针,而静态成员函数没有this指针。 
          (3)静态成员函数主要用来方位静态数据成员而不能访问非静态成员。

  • 相关阅读:
    贝叶斯思想的实质之我见
    强化学习基础概念理解
    Thinkpad x200用户只能放弃生化危机5(PC版), 希望能全速运行星际争霸2!
    This is it
    今天自己掏腰包去买联通iPhone有几位?
    今天是我的生日:)
    2009已经到来 / 2009 Just the Beginning
    好评如潮的PS3游戏《抵抗2 Resistance2》你玩了吗?
    生化危机5 / BIOHAZARD5 简直就是一款完美的印钞机?(+2009.4.9)
    一部好电影《第九区 District 9》
  • 原文地址:https://www.cnblogs.com/goul/p/9650611.html
Copyright © 2011-2022 走看看