C和C++编程中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的值将会被一次次的累加。
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关键字的含义-修饰函数和变量相关推荐
- C++中 static 关键字的作用
C++中 static 关键字的作用 对于函数定义和代码块之外的变量声明,static 修改标识符的链接属性,由默 认的 external 变为 internal,作用域和存储类型不改变,这些符号只能 ...
- C/C++中static关键字详解
其实只有一句话需要注意: static在类外初始化,然后才可以在类内修改,其生命周期就是整个程序的生命周期. 静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时 ...
- php 中的作用是什么,php中static关键字的作用是什么
php中static关键字的作用是:1.放在函数内部修饰变量,函数执行完后变量值仍然保存:2.放在类中修饰属性或方法,如果修饰的是类的属性,则保留值:3.放在类的方法中修饰变量:4.修饰全局作用域的变 ...
- static在php中,php中static关键字在类中的使用
static关键字用来修饰属性.方法,称这些属性.方法为静态属性.静态方法. static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类 ...
- C/C++中static关键字的作用
在C语言中static的作用如下 第一.在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放. 第二.static修饰全局变量的时候, ...
- java中static类的作用是什么意思_java中static关键字是什么意思
java中static关键字是什么意思 发布时间:2020-11-11 11:01:11 来源:亿速云 阅读:86 作者:小新 这篇文章给大家分享的是有关java中static关键字是什么意思的内容. ...
- c语言中关键字static_了解C ++中Static关键字的变体
c语言中关键字static Hello, folks! Today we will be unveiling another important aspect in the series of our ...
- java中static关键字的作用_面试|static 关键字有什么作用
今天主要学习下Java语言中的static关键字. static关键字的含义及使用场景 static是Java50个关键字之一.static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局 ...
- Java中static关键字的作用与用法
一.static关键字的特点: static是一个修饰符,用于修饰类的成员方法.类的成员变量,另外可以编写static代码块来优化程序性能. 1. static修饰成员方法 static修饰的方法一般 ...
最新文章
- Amazon Go开门营业,号称无需现金、无需排队结账,现场究竟体验如何?
- linux常见问题解答汇总
- mysql 修改配置生效_linux下面MySQL变量修改及生效
- 高斯混合模型Gaussian Mixture Model (GMM)——通过增加 Model 的个数,我们可以任意地逼近任何连续的概率密分布...
- python适合做后端开发吗-Python真的不适合做后端开发语言吗?
- XCTF-高手进阶区:Web_php_include
- js 上下箭头滚动_JS中的this完全讲解,再也不会被this搞晕了
- oracle adf_Fn函数来构建Oracle ADF应用程序
- Lakehouse 架构解析与云上实践
- linux iptables
- python-迭代器实现异步(在串行中)
- 190609每日一句,科比·布莱恩特:这就是我成功的原因,即使身陷低谷,也要抬头仰望星空
- 土木工程与计算机专业考研学校排名,2017年土木工程专业考研大学排名
- 神经网络与深度学习第4章:前馈神经网络 阅读提问
- css画钟表_CSS绘制时钟
- 第十八章 Chisel基础——模块与硬件类型
- lt路由器的虚拟服务器如何使用,路由器设置局域网内服务器
- Redis数据类型——hash
- linux c strtol 字符串转int 简介
- PCB表面处理OSP工艺中影响膜厚的因素分析