static用来修饰一个函数的时候,表示的意思如下:

1、表示该方法只在本c文件中有效。在其他c文件中无法访问这个方法。
2、static的方法的定义一般不放在.h文件中,因为这个方法只在一个c文件中有效。一般直接将该方法定义在c文件的开头部分就可以了。
3、一般申明这种方法用来封装一些逻辑,和面向对象的private有点类似。比如,我们申明一个方法为static,然后申明一堆其他的方法 (根据用途的不同),这些方法会用不同的参数调用该static方法,而这些方法不是static的,所以,这些方法是可以被其他文件调用的,而这个 static方法封装了所有的逻辑,而且只在本c文件中有效,有效避免了其他文件直接方法该方法。有点面向对象的意思哦。

static关键字用来修饰一个变量的时候:

1、如果该变量是全局变量,即不属于任何function的一个变量,那么,表示该变量只能在当前的源文件中使用,其他源文件不能使用extern关键字来引用这个关键字。所以,其他源文件也可以定义同名的变量,不影响。
2、如果在一个function中定义一个static变量,表示该变量的生命周期和本c文件的声明周期一样长,再次进入该function的时候,该static变量的值还保持为上次修改后的结果,如:

Code: Select all
int count() {
    static int result = 0;
    result++;
    return result;
}

每次进入这个count方法的时候,result的值不会被重复初始化为0,因为这是static变量,只会被初始化一次。下次进入这个count方法,result的值将会被一次次的累加。

顺便提一下C++中的static:

1. 如果static修饰一个class member variable,表示该变量和class type相关,多个该class的object/instance都share这一个变量。

2. 如果static修饰一个class function member,表示该函数没有this指针。其实也就是该函数和class type相关,不和instance相关。由于function没有this指针,就没法使用class instance中的变量,只能访问一些static的变量。

如果static变量或函数不出现在class中,则C++ Primer中明确提到,对于这种和传统C相同的static的变量或函数,应使用Unnamed Namespace来代替使用static。C++中使用Unnamed Namespace来代替传统的static,每个源文件都有自己独立的Unnamed Namespace,定义在unnamed namespace中的变量或函数表示只在该源文件中有效。其他源文件不能引用和访问这些变量或函数。其他源文件也可以定义名字相同的变量或函数。

传统的C中继承过来的static全局变量或函数将来有可能不支持,所以,请使用unnamed space来代替。

有关Unnamed Namespace的具体内容请参考C++ Primer 4th Edition Section 17.3

转载于:https://www.cnblogs.com/super119/archive/2011/03/26/1996101.html

C和C++编程中static关键字的含义-修饰函数和变量相关推荐

  1. C++中 static 关键字的作用

    C++中 static 关键字的作用 对于函数定义和代码块之外的变量声明,static 修改标识符的链接属性,由默 认的 external 变为 internal,作用域和存储类型不改变,这些符号只能 ...

  2. C/C++中static关键字详解

    其实只有一句话需要注意: static在类外初始化,然后才可以在类内修改,其生命周期就是整个程序的生命周期.  静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时 ...

  3. php 中的作用是什么,php中static关键字的作用是什么

    php中static关键字的作用是:1.放在函数内部修饰变量,函数执行完后变量值仍然保存:2.放在类中修饰属性或方法,如果修饰的是类的属性,则保留值:3.放在类的方法中修饰变量:4.修饰全局作用域的变 ...

  4. static在php中,php中static关键字在类中的使用

    static关键字用来修饰属性.方法,称这些属性.方法为静态属性.静态方法. static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类 ...

  5. C/C++中static关键字的作用

    在C语言中static的作用如下 第一.在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放.  第二.static修饰全局变量的时候, ...

  6. java中static类的作用是什么意思_java中static关键字是什么意思

    java中static关键字是什么意思 发布时间:2020-11-11 11:01:11 来源:亿速云 阅读:86 作者:小新 这篇文章给大家分享的是有关java中static关键字是什么意思的内容. ...

  7. c语言中关键字static_了解C ++中Static关键字的变体

    c语言中关键字static Hello, folks! Today we will be unveiling another important aspect in the series of our ...

  8. java中static关键字的作用_面试|static 关键字有什么作用

    今天主要学习下Java语言中的static关键字. static关键字的含义及使用场景 static是Java50个关键字之一.static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局 ...

  9. Java中static关键字的作用与用法

    一.static关键字的特点: static是一个修饰符,用于修饰类的成员方法.类的成员变量,另外可以编写static代码块来优化程序性能. 1. static修饰成员方法 static修饰的方法一般 ...

最新文章

  1. Amazon Go开门营业,号称无需现金、无需排队结账,现场究竟体验如何?
  2. linux常见问题解答汇总
  3. mysql 修改配置生效_linux下面MySQL变量修改及生效
  4. 高斯混合模型Gaussian Mixture Model (GMM)——通过增加 Model 的个数,我们可以任意地逼近任何连续的概率密分布...
  5. python适合做后端开发吗-Python真的不适合做后端开发语言吗?
  6. XCTF-高手进阶区:Web_php_include
  7. js 上下箭头滚动_JS中的this完全讲解,再也不会被this搞晕了
  8. oracle adf_Fn函数来构建Oracle ADF应用程序
  9. Lakehouse 架构解析与云上实践
  10. linux iptables
  11. python-迭代器实现异步(在串行中)
  12. 190609每日一句,科比·布莱恩特:这就是我成功的原因,即使身陷低谷,也要抬头仰望星空
  13. 土木工程与计算机专业考研学校排名,2017年土木工程专业考研大学排名
  14. 神经网络与深度学习第4章:前馈神经网络 阅读提问
  15. css画钟表_CSS绘制时钟
  16. 第十八章 Chisel基础——模块与硬件类型
  17. lt路由器的虚拟服务器如何使用,路由器设置局域网内服务器
  18. Redis数据类型——hash
  19. linux c strtol 字符串转int 简介
  20. PCB表面处理OSP工艺中影响膜厚的因素分析

热门文章

  1. npy一维数组如何对给出的索引进行反选
  2. 今日听闻这几款手机软件比较火爆 果然名不虚传!
  3. golang的reflection(转)(一)
  4. NotifyMyFrontEnd 函数背后的数据缓冲区(一)
  5. [转]使用Navicat for Oracle工具连接oracle的
  6. 网络配置 rpm yum
  7. 2015 CALLED THE INTERFACE OF 2014
  8. 架构师未来性的基础:简单性
  9. .net 预编译 提示中导入的类型 冲突
  10. 用JS访问iframe中的元素