zoukankan      html  css  js  c++  java
  • 基础的语法知识(static关键字)

    1.C++中的局部变量、全局变量、局部静态变量、全局静态变量的区别

      局部变量(Local variables)与 全局变量:

    在子程序或代码块中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。

    全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序或代码块。

    当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

    全局变量在程序开始运行期间就已经在内存中开辟了内存空间,直到程序结束才会释放这块内存空间。

    int nData = 10;  // 这是一个全局变量
    int main()
    {
      int i = 0;  // 这是一个局部变量,这个变量只在main函数中有效。
      int nData = 100;  // 这也是一个局部变量,但是这个局部变量与全局变量重名了
      cout << nData << endl;
      return 0;
    }
    

    局部静态变量:

    局部static变量与全局变量一样,在程序开始运行期间就已经在内存中开辟了空间,直到程序结束才会释放这块内存空间。

    一个局部static变量只定义/初始化一次,后序都不再定义或初始化。

    局部static变量只能在定义的子程序或代码块中访问,不能在外部访问,所以叫局部静态变量。

    全局静态变量:

    全局static变量与局部static变量一样,在程序开始运行期间就分配了内存地址。

    局部static变量只能在定义的代码块中被访问,而全局static变量只能在定义的文件中被访问。不能跨文件访问。

    --------

    静态数据成员:独立于该类的任意对象而存在,是与类关联的对象,并不与该类的对象关联。static数据成员(const static数据成员除外)必须在类定义体的外部定义。

    静态成员函数:static成员函数没有this形参,可以直接访问所属类的static成员,不能直接使用非static成员。static成员函数不能被声明为虚函数。

    ----------

    static成员变量定义放在cpp文件中,不能放在初始化列表中。const static成员可就地初始化。

    ----------------

    如何引用已经定义过的全局变量:引用头文件或者是使用extern关键字(如果写错则报错的方式不同);

    static关键字的作用使变量或者对象的存储形式变为静态存储,连接方式变成内部连接,对于局部变量(已经是内部连接了),只改变存储方式,对于全局变量(已经是静态存储),只改变连接类型。

    因此,在源程序包括多个源文件时,全局变量可以在整个程序中有效,而静态全局变量只能在当前被定义的源文件中有效,限制了作用域。

    static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。

    ----------------------------------------------------------------------

  • 相关阅读:
    May 1 2017 Week 18 Monday
    April 30 2017 Week 18 Sunday
    April 29 2017 Week 17 Saturday
    April 28 2017 Week 17 Friday
    April 27 2017 Week 17 Thursday
    April 26 2017 Week 17 Wednesday
    【2017-07-04】Qt信号与槽深入理解之一:信号与槽的连接方式
    April 25 2017 Week 17 Tuesday
    April 24 2017 Week 17 Monday
    为什么丑陋的UI界面却能创造良好的用户体验?
  • 原文地址:https://www.cnblogs.com/zhang-qc/p/8663962.html
Copyright © 2011-2022 走看看