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

原创 2011年01月22日 10:34:00

首先,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成员函数的设置,主要是为了访问静态变量,或者完成某些独立于类实例的功能。

C/C++区别之 Static 关键字

静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。     静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。 用法1:函...

c++类型转换关键字dynamic_cast和static_cast的使用区别

使用环境是ubuntu14.04 static_cast和dynamic_cast: dynamic_cast的机制貌似是转换出错就返回NULL,测试过4种情况: 1) A* a = new B;  ...

C/C++中static关键字作用总结(转)

源地址C/C++中static关键字作用总结隐藏先来介绍它的第一条也是最重要的一条:隐藏(static函数,static变量均可) 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具...

static关键字在C/C++中的作用(详解)

static关键字在C/C++的作用:1.将变量声明为静态变量:静态变量会存储在程序的数据段中,也就是说不会在栈中分配,它的生命周期是全局的。 如果是局部静态变量,它的生命周期也是全局的并且只被初始...

C/C++中static关键字作用总结

1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,...

C/C++中static关键字及变量存储位置总结

static关键字及变量存储位置总结 今天看博文时,看到了c++的static关键字的一些总结,还涉及到了一些代码的存储位置,为了有时间的时候能够看一下,还是自己把它给摘抄下来吧。 C...

简述static关键字在c/c++中的作用

在C语言中,关键字static有三个明显的作用: 1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。 2) 在模块内(但在函数体外),一个被声明为...

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

C/C++中static关键字详解    静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。    静态变量或静态函数只有本文件内的代码才能访问它,...

C/C++中的static关键字

1. 序言术语static有着不寻常的历史. 起初,在C中引入关键字static是为了表示退出一个代码块后仍然存在的局部变量。 随后,static在C中有了第二种含义:用来表示不能被其它文件访问的...

C/C++static关键字详解(转自:帅得不敢出门 )

static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准).  (1)局部...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关键字static在C和C++中的区别
举报原因:
原因补充:

(最多只允许输入30个字)