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++程序员面试秘笈》
下一篇:
UML之需求利器——用例模型