C++ static静态变量(无师自通)
虽然函数在程序中可以被多次调用,但是存储在函数局部变量中的值并不会持久存在,这是因为局部变量在函数终止时即被销毁,然后在函数再次被调用时又会被重新创建。下面的程序说明了这种变化:
然而,有时候需要让程序“记住”在函数调用之间的局部变量中存储了什么值,这可以通过使变量成为静态变量来实现。当函数返回时,静态局部变量不会被销毁,它们存在于程序的整个一生中,尽管它们的作用域只是在定义它们的函数中。
下面的程序使用了静态局部变量来计算调用函数的次数:
有人可能会认为每次调用 showStatic 函数时,numCalls 将被重新初始化为 0,但是不会发生这种情况,因为只有在创建该变量时才会初始化一个变量,而在程序运行期间静态变量只创建一次。如果没有初始化 numCalls,那么它将自动初始化为 0,因为和全局变量一样,如果程序员没有初始化数字静态局部变量,则它们将自动初始化为 0。
#include <iostream> using namespace std; void showLocal(); //Function prototype int main() { showLocal(); showLocal(); return 0; } void showLocal() { int localNum = 5; // Local variable cout << "localNum is " << localNum << endl; localNum = 99; }程序输出结果:
localNum is 5
localNum is 5
然而,有时候需要让程序“记住”在函数调用之间的局部变量中存储了什么值,这可以通过使变量成为静态变量来实现。当函数返回时,静态局部变量不会被销毁,它们存在于程序的整个一生中,尽管它们的作用域只是在定义它们的函数中。
下面的程序使用了静态局部变量来计算调用函数的次数:
#include <iostream> using namespace std; void showStatic(); // Function prototype int main() { // Call the showStatic function five times for (int count = 0; count < 5; count++) showStatic(); return 0; } void showStatic() { static int numCalls = 0; // Static local variable cout << "This function has been called " << ++numCalls << " times." << endl; }程序输出结果:
This function has been called 1 times.
This function has been called 2 times.
This function has been called 3 times.
This function has been called 4 times.
This function has been called 5 times.
有人可能会认为每次调用 showStatic 函数时,numCalls 将被重新初始化为 0,但是不会发生这种情况,因为只有在创建该变量时才会初始化一个变量,而在程序运行期间静态变量只创建一次。如果没有初始化 numCalls,那么它将自动初始化为 0,因为和全局变量一样,如果程序员没有初始化数字静态局部变量,则它们将自动初始化为 0。
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频