全局变量和static的用法

变量的作用域
变量按其生效范围,分为全局变量局部变量
1.全局变量:在函数和类外的定义的变量,具有全局的作用域,作用范围从定义点起到文件结束为止。(除非作用域被当前同名作用域覆,即使用最近定义)
例如:
在这里插入图片描述
输出结果:
在这里插入图片描述
此时输出的a=4,而不是全局的123;
如果此时想要输出全局的a,就要加上作用域“::”。
例如:
在这里插入图片描述
输出结果:
在这里插入图片描述
注意,::不能访问函数中的局部变量

2.局部变量:在一对花括号起的函数体内或语句块内定义的,其作用域仅限于函数体内或语句块内定义,在其他作用域内使用是非法的。作用范围从定义点起到局部变量所在块的尾部为止。
例如:x仅限于for里面
在这里插入图片描述

另外:
在软件设计时尽量避免少的使用全局变量,如果仅需要在某个文件源中使用,可以使用static限制符将作用域仅仅限于它所定义的源文件中。(在做大程序的时候需要)

static三个用法:
1>静态局部变量
2>静态数据成员
3>静态成员函数

静态局部变量:在所定义的函数内一直存在,存储在静态存储区,在程序整个运行期间都不释放,局部变量在所处模块初次运行时进行初始化工作,且只操作一次,如果不赋初值,编译器会自动赋初值为0或者空字符。

在这里插入图片描述
输出结果:
在这里插入图片描述
静态数据成员:静态成员数据的值对同一个类的对象是一样的,一旦某个对象中的对象数据成员的值进行更新,则所有的对象都会访问到更新后的值。
特点
1)某个类的所有对象都共享数据成员
2)静态数据成员是静态储存,所以必须进行初始化。其初始化必须在类外进行,前面不加关键字与静态变量相区别,初始化用作用域运算符表明所属的类。
3)静态数据成员的引用格式:
<类名>::<静态数据成员名>
<对象名>.<静态数据成员名>
<对象指针>-><静态数据成员名>
例如:
在这里插入图片描述

静态成员函数:即在成员函数前加上关键字static。他可以直接访问所属类的static成员,但不能直接访问非static成员。static成员函数在类外实现时前面也不加static。而且,static成员函数不能用const修饰,也不能声明纯虚函数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值