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

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

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

代码示例:

#include 
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 
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++程序员面试秘笈》

谢谢阅读

你可能感兴趣的:(C/C++,c++,static,c语言)