C/C++中static关键字的作用是什么?

在C/C++中,关键字static有以下3个明显的作用:

1、在函数体内,一个被声明为静态的变量在这一函数被调用的过程中维持其值不变。(维持着上次函数调用后的值,而不是每次函数调用后,值都重新进行声明)

代码示例:

#include <iostream>
using namespace std;

void func() {
    static int a = 100;
    a++;
    cout << a << endl;
}
int main() {
    func();	 // 调用 1 次
    func();	 // 调用 2 次
    func();  // 调用 3 次
    return 0;
}

输出:

101
102
103

可以看到,在static变量声明之后,每次调用函数,static变量都是维持着上次调用的值。而不是每次调用都重新声明。

2、在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其他函数访问。它是一个本地的全局变量。

3、在模块内,一个被声明为静态的函数只可被这一模块内的其他函数调用。也就是,这个函数被限制在声明它的模块的本地范围内使用。

代码示例:

#include <iostream>
using namespace std;

// 全局静态变量:只能被本模块内的函数访问
static int a = 100;

// 全局静态函数:只能在本模块范围内被调用
static void func1() {
    cout << "static func" << endl;
}

// 局部静态变量,声明之后值维持不变(维持上次调用后的值,而不是每次调用都重新声明),不论函数调用多少次
void func2() {
    static int b = 100;
    b++;
    cout << b << endl;
}

int main() {
    func2();
    func2();
    func2();
    func1();
    return 0;
}

输出:

101
102
103
static func

参考:《C和C++程序员面试秘笈》

谢谢阅读

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值