静态变量和全局变量

静态数据成员和静态函数:与类本身直接相关,而不是与类的各个对象保持关联。通过在成员的声明之前加上关键字static使得其与类关联在一起。 静态数据成员的类型可以是算术类型、常量、引用、指针、类类型等。类似的,静态成员函数也不与任何对象绑定在一起,它们不包含this指针。静态成员函数不能声明为const的。使用作用域运算符可以直接访问静态成员。

 静态函数的定义:既可以在类的内部也可以在类的外部定义。如果在类的外部定义,不能重复static关键字,关键字只能出现在类的内部声明语句。

 静态数据成员初始化:由于静态数据不与任何一个对象关联,所以它们并不在创建类的对象时被定义。这意味着不是由类的构造函数初始化的。而且一般,不在类的内部初始化静态数据成员。必须在类的外部定义和初始化每个静态成员。

 全局变量:形参和函数体内定义的变量统称为局部变量。在所有函数体外定义的变量称为全局变量。

 局部静态对象:某些时候,有必要令局部变量的生命周期贯穿函数调用及之后的时间。可以将局部变量定义成static类型从而获得这样的对象。

 静态变量和全局变量的区别:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。 

               

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值