zoukankan      html  css  js  c++  java
  • c++ static笔记

    【转】http://www.cnblogs.com/zi-xing/p/4590282.html

    static的作用

    1. 在函数体,一个被声明为static的变量,在这一函数被调用的过程里,其数值维持不变。
    2. 在模块内(但在函数体外),一个被声明的静态变量可以被模块内的所有函数访问,但是不能被模块外的函数访问,是一个本地的全局变量
    3. 在模块内,一个被声明为静态的函数只可能被这一模块内的其他函数调用,也就是这个函数被限制在声明它的模块内使用。

    总的来说,static控制了变量和函数的使用范围(本地数据化和代码范围的控制)


    static全局变量和普通全局变量的区别

    全局变量和静态全局变量都是静态存储方式。区别在于:非静态全局变量的作用域是整个源程序,当一个源程序有多个源文件组成时,非静态的全局变量在各个源文件都有效,而静态全局变量则限制了作用域,只定义了该静态全局变量的源文件有效,同一源程序的其他源文件不能使用它,使用静态全局变量可以避免在其他源文件中引起错误。

    综上:把局部变量改成静态变量改变了它的存储方式,及改变了它的生存期,把全局变量改为静态变量,改变了它的作用域,限制了它的使用范围。

    1. static全局变量与普通全局变量的区别:static全局变量只初始化一次,防止在其他文件单元中被引用
    2. static局部变量与普通变量的区别:static全局变量只初始化一次,下一次依据上一次结果值。
    3. static函数与普通函数的区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份复制品
  • 相关阅读:
    golang 数据结构 优先队列(堆)
    leetcode刷题笔记5210题 球会落何处
    leetcode刷题笔记5638题 吃苹果的最大数目
    leetcode刷题笔记5637题 判断字符串的两半是否相似
    剑指 Offer 28. 对称的二叉树
    剑指 Offer 27. 二叉树的镜像
    剑指 Offer 26. 树的子结构
    剑指 Offer 25. 合并两个排序的链表
    剑指 Offer 24. 反转链表
    剑指 Offer 22. 链表中倒数第k个节点
  • 原文地址:https://www.cnblogs.com/candl/p/5156846.html
Copyright © 2011-2022 走看看