static关键字

static可以作用的范围

struct Test{
    static int sta_member;      // 静态成员变量
    static void sta_method();   // 静态成员函数
};
static int sta_global_val;      // 静态全局变量
static void StaFunc();          // 静态普通函数
void Demo(){
    static int sta_local_val;   // 静态局部变量
}

静态成员变量与静态成员函数

成员变量与成员函数:指在一个结构体或者类中所出现的变量和函数。
与之想对应的是非静态成员变量(属性,property)和非静态成员函数(方法,method),与实例有关;而静态成员变量与静态成员函数则是全局统一的。

struct Test{
    static int sta_member;      // 静态局部变量
    static void sta_method();   // 静态局部函数
    int member;
    int method();
};
// 静态局部变量
void Demo(){
    Test a, b;
    a.sta_member = 6;
    cout << b.sta_member;       // 6
    cout <<Test::sta_member;    // 6
}
// 非静态局部变量
void Demo(){
    Test a, b;
    a.member = 1;
    b.member = 2;
    cout << a.sta_member;       // 1
    cout <<Test::member;   // ERR
}

在这里插入图片描述

静态全局变量与静态普通函数

静态全局变量与静态普通函数不可以在不同文件见进行链接。
在这里插入图片描述

静态局部变量

静态局部变量不存储在栈里面,而在另一个存储区里面,换句话说,静态局部变量的生命周期在第一次初始化时创建,在程序结束时释放。可以看一个例子对比:

void f(){
    int a = 0;
    static int b = 0;
    a++;
    b++;
    cout << a << "," << b << endl;
}
void Demo(){
    f();
    f();
    f();
}

其输出为:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值