static关键字的用法

static关键字的用途,可以从以下几点分析:作用域和生命周期

对于完成的程序,在内存中的分布情况如下:
栈区: 有编译器自动分配释放。像全局变量、函数参数。会随着作用域退出而释放空间。
堆区: 程序员分配并释放的区域,像malloc(c), new(c++)。
全局数据区(静态区): 全局变量和静态变量的存储放在一块的,初始化的全局变量和静态变量在一块区域,为初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束时释放。

1、静态局部变量:用于函数体内部修饰变量,这种变量的生存期直到程序关闭。
作用域:函数体内部 生存期:整个程序运行期间

静态局部变量的特点: 1、该变量在全局数据去分配内存(局部变量在栈区分配内存);2、静态局部变量在程序执行到该对象的声明处被首次初始化,即以后的函数调用不再初始化;3、静态局部变量一般在声明处初始化,如果没有显示初始化,会被程序自动初始化为0(局部变量不会被初始化,值为空);4、它始终驻留在全局数据区,知道程序运行结束。但其作用域为局部作用域,也就是不能在函数体外面使用它;

2、静态全局变量: 定义在函数体外,用于修改全局变量,表示该变量只在本文件中可见。特点:静态全局变量不能被其他文件使用(全局变量可以);其他文件中可以定义相同名字的变量,不会发生冲突;

3、静态函数: 静态函数跟静态全局变量的作用类似,静态函数不能被其他文件所用,其他文件中可以定义相同名字的函数,不会发生冲突。

4、静态数据成员: 用于修饰class的数据成员,即静态成员。这种数据成员的生存期大于class对象(实体instance)。静态数据成员是每个class有一份,普通数据成员是每个instance有一份,因此静态数据成语也叫类变量,而普通数据成员也叫做实例变量。对于非静态数据成员,由该类型的所有对象共享访问,对该类的多个对象来说,静态数据成员只一次内存。

5、静态成员函数: 1、静态成员函数直接可以相互访问,包括静态成员函数访问静态成员和访问静态成员函数;2、非静态成员函数可以任意的访问静态成员函数和静态数据成员;3、静态成员函数不能访问非静态成员函数和非静态成员;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值