首先,C++是C的超集,所以static在C中的用法 对于C++来说是全盘接受的,而两者的不同也就是C++中多出来的特性,而这些多出来的特性与C++面向对象的特性有关,或更具体的说,就是static在“类”中的意义和作用。

1:C语言中的Static使用:

 

1.1  C中static变量 的影响其实不在作用域而在于 其“存储方式”:

即在函数内定义的static变量,其作用域仍然在函数内;在函数外定义的static变量,其作用域也在函数外,属于变量所在的文件的作用域。

static 的静态存储方式使得:同一函数的所有static变量的“副本”都共用一个该变量。所以使用了static变量的函数一般是“不可再入”的,不是“线程安全”的。

1.2  C中static函数 的作用:

C中static函数还有另外一个名字,叫:内部函数。从名字也可看出,C中的static函数的定义将函数“局部化”,使其访问权限被限制在当前文件内部,这实际上说明的是一种“代码的隐藏机制”,通过和extern函数(外部函数)的联合使用,可以实现C语言中函数的模块化设计,这有点类似与C++ 中的Public和private关键字的味道。  当然,如果在C中,函数默认的访问权限是extern的,所以关键字extern往往省略不写。

2: C++类中定义的Static变量和函数

其实本质上与C中的情况一致,不在于作用域(还是类的作用域),而在于其“存储方式”决定了Static变量将与类存储在一起(因为类本身在内存中有其原型的内存空间),而类的实例将共享这一static变量,所以static变量也不是“线程安全”的。

而static成员函数的设置,主要是为了访问静态变量,或者完成某些独立于类实例的功能。

转载于:https://www.cnblogs.com/10jschen/archive/2012/09/22/2698139.html

关键字static在C和C++中的区别相关推荐

  1. 深入分析Java中的关键字static

    深入分析Java中的关键字static 一.static关键字的基本用法 1.static关键字基本概念 方便在没有创建对象的情况下来进行调用.也就是说:被static关键字修饰的不需要创建对象去调用 ...

  2. java static关键字的作用是什么_java中的static关键字

    一.static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概念,在Java中static表示"全局"或者 ...

  3. [面试] C++中的static关键字 (static 上镜率非常高!)

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 一.面向过程设计中的st ...

  4. static在c语言中的作用_C语言关键字 static 的用法

    接上文:C语言的32个关键字 C语言 static 关键字的常见用法有三种: 用于局部变量的修饰符: 用于全局变量的修饰符: 用于函数的修饰符. 1.用于局部变量的修饰符 当 static 用于修饰局 ...

  5. Java 主函数 main 中的关键字 static

    相信很多人在运行第一个可以运行的 Java 程序的时候都会要求写一个主函数. 然后很多人都会照葫芦画瓢的写一个下面的函数: public static void main(String[] args) ...

  6. php 类static引用函数吗,php中在变量和函数前加static关键字之后的区别

    static全局变量和普通全局变量,static局部变量和普通局部变量,static函数与普通函数的区别?下面本文将一一为你解答. (1)全局变量(外部变量)的说明之前再冠以static 就构成了静态 ...

  7. C语言的一个关键字——static

    C语言的一个关键字--static Static在C语言里面有两个作用,第一个是修饰变量,第二个是修饰函数. 1.Static修饰变量 按照作用范围的不同,变量分为局部变量和全局变量.如果用stati ...

  8. 关键字static、const、volatile的作用

    关键字static的作用是什么?这个简单的问题很少有人能回答完全.在C语言中,关键字static有三个明显的作用: 1.在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变. 2. 在模 ...

  9. C/C++关键字 static 和 const

    C/C++关键字 static 和 const 一.关键字static 参考:https://www.cnblogs.com/BeyondAnyTime/p/2542315.html 1. 静态全局变 ...

最新文章

  1. shanghai international trade center
  2. SSD(Single Shot MultiBox Detector):因为数据集中图像通道数不对导致的训练异常
  3. 转:用人单位给计算机系学生的一封信
  4. 依赖项出现感叹号怎么办_「电脑常用技巧」不喜欢看到的黄色感叹号
  5. inner join on, left join on, right join on讲解
  6. 去除android或者iOS系统默认的一些样式总结
  7. 开源字体下载——思源黑体
  8. cmake 交叉编译工具链
  9. Premiere Pro CC2017软件安装资料及教程
  10. 钢结构工程管理软件系统
  11. 利用selenium获取接口数据
  12. [Qualcomm][Audio] 高通Audio Bringup Guide
  13. kylin安装以及遇见到的一些问题和解决方法
  14. unity进度条,物品随机掉落
  15. javaweb的校园快递管理系统
  16. i9级E52450处理器_来了!十代英特尔酷睿标压处理器,实测跑分首发
  17. 极路由设置虚拟服务器,HiWiFi极路由手机设置教程
  18. weblogic-cve_2020_2883漏洞复现
  19. 如何快速的学习ssh框架
  20. java excel 背景_Java设置Excel背景

热门文章

  1. DLL的高级操作技术——Windows核心编程学习手札之二十
  2. Leetcode 223. 矩形面积 解题思路及C++实现
  3. 模糊数学笔记:一、模糊集及其运算性质
  4. Involution代码
  5. 可能大家都能跑通的ignite的HelloWorld
  6. Ubuntu中Netbeans的中文问题彻底解决
  7. Create Maintenance Plans
  8. jQuery 对象和 DOM 对象
  9. MySQL 技术篇- linux下mysql数据库利用binlog文件进行数据回滚实例演示,binlog恢复数据库的两种方式
  10. Python 技术篇-使用pygame库实现音乐播放实例演示,带漂亮小界面!