C/C++语言 static关键字的用法

C/C++中static关键字可以从以下三个方面理解

1,static 修饰变量的存储区特性

static int a;

本质意义为static修饰的变量被分配在静态存储区,不是在栈上,也不是在堆上。

所以有以下应用场景。

1,C语言中,会在初次运行的时候进行初始化,整个程序运行期间都不释放。

      如果变量为C++ 类对象,则在main()之前执行构造函数,进行初始化。

2,由于存储区不是在栈上,所以函数中用static修饰的局部变量就有“记忆性”。

      也就是指在两次函数调用时, 在第二次调用进入时, 能保持第一次调用退出时的值.


2 ,static修饰函数/变量的作用域特性

//file1.c

static int a;

static void foo();

用static修饰的函数或者变量,只能在定义它的文件内被使用。

这样不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。


3 ,C++的引申扩展含义

C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量和函数.

与普通成员函数的最大区别, 是static修饰的变量/函数在此类中的唯一性.

 这也是”属于一个类而不是属于此类的任何特定对象的变量和函数”。

例如:

class myclass

{

  public:

  static int getNumber() {return mNum};

  private:

  static in mNum;

};


myClass A, B;

则A,B 中只有一份nNum,它既不属于A,也不属于B。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值