C语言关键字static详解

C语言关键字static作用详解:

1、隐藏

当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。

2、static修饰变量能够保持变量内容的持久,static变量的记忆功能和全局生存期

static变量存储在静态存储区,有静态局部变量和静态全局变量,在程序运行期间始终存在。

a) 静态局部变量

静态局部变量在函数内定义,但不像自动变量那样,在作用域范围就存在,退出作用域时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。虽然静态局部变量的生存期为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后,尽管该变量还继续存在,但不能使用它。

b) 静态全局变量

全局变量增加static修饰就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它(隐藏)。

3、static第三个作用是默认初始化未0;在静态存储区,内存中所有字节默认值都是0x00

4、static的第四个作用:c++中类成员声明static

a) 类的静态成员函数属于整个类而非类的对象,所以它没有this指针,这就导致了它仅能访问类的静态数据和静态成员函数。

b) 不能将静态成员函数定义为虚函数。

c) 静态数据成员是静态存储的,所以必须对他初始化。

d) 未防止父类的影响,可以在子类中定义一个与父类相同的静态变量,以屏蔽父类的影响。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值