在C++中,在函数中使用static定义一个变量,该变量最终只会分配一次内存,如果下次继续调用该函数,不会再重新分配内存给变量,而是使用上次分配的内存。
#include<iostream>
using namespace std;class StaticVer
{
public:int num ;StaticVer():num(10){}};int * staticNum()
{static int a = 10;return &a;
}StaticVer * StaticObj()
{static StaticVer statv;return &statv;
}int main(void )
{for (size_t i = 0; i < 10; i++){int *pNum = staticNum();StaticVer*pObj = StaticObj();cout << "staticNum addr:" << pNum << endl;cout << "StaticObj addr:" << pObj << endl;cout << "-------------------" << endl;}getchar();
}
运行这段代码,我们会得到如下结果:
staticNum addr 总是指向地址0094E000
StaticObj addr 总是指向地址0094E2C8
staticNum addr:0094E000
StaticObj addr:0094E2C8
最后程序运行截图
















