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函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。

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

  • 相关阅读:
    PHP xml_get_current_column_number() 函数
    PHP xml_get_current_byte_index() 函数
    PHP xml_error_string() 函数
    PHP utf8_encode() 函数
    PHP utf8_decode() 函数
    MySQL 资料库概论与MySQL 安装
    SEO之网站关键词的优化 :首页,内页关键字,长尾关键字
    前端开发chrome console的使用 :评估表达式 – Break易站
    chrome console的使用 : 异常和错误的处理 – Break易站
    SEO的基本概念 和 提交SITEMAP到搜索引擎
  • 原文地址:https://www.cnblogs.com/zhang-qc/p/8663962.html
Copyright © 2011-2022 走看看