神奇的static
来源:互联网 发布:php中添加按钮 编辑:程序博客网 时间:2024/06/03 13:04
C/C++中的static用法总结(一)
##static用来控制变量的存储方式和可见性
函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间。在函数执行结束后,分配的空间会被立即释放掉。如何在保障函数体内变量的私有性前提下,使该变量的值保存至下一次调用的时候呢?此static就派上了用场。当需要一个数据对象为整个类而不是某个对象服务,同时又力求不破坏的封装性,即要求此成员隐藏在成员的内部,对外不可见。
要想深入了解static的机制,就要理解静态与非静态变量:静态的成员存在于内存,非静态成员需要实例化才会分配内存。所有没有加static的成员都是非静态成员。话不多说,先上程序实例帮助理解:
#include<iostream>using namespace std;//含有静态变量的函数int func_1(void) { static int static_para=0; //上面这句话在func_1第i次调用不再被执行(i>1) static_para++; return static_para;}//不含有静态变量的函数int func_2(void) { int no_static_para = 0; no_static_para++; return no_static_para;}int main() { int i, j; cout << "非静态" << " " << "静态" << endl; //设置循环,连续调用两个函数10次 for (int k = 0; k < 10; k++) { j = func_1(); i = func_2(); cout <<i<<" "<<j<<endl; } return 0;}
程序运行的结果:
1 0
- 神奇的static
- 神奇的static
- java回忆录—神奇的关键字-static
- C语言中static关键字的神奇之处
- 神奇的的调色板
- 神奇的*号
- 一组神奇的图片
- 神奇的一天
- 神奇的预言
- 神奇的jsfl!
- 神奇的VIM
- 神奇的猴子Mono
- 神奇的xx宏
- 神奇的视觉艺术
- 神奇的上班路上
- 神奇的视觉艺术
- 神奇的 DataGrid
- 神奇的食物
- dotnet new 命令使用模板生成Angular应用
- ES6 set
- [Leetcode] #257 Binary Tree Paths
- ClassNotFoundException: org.springframework.context.event.GenericApplication
- android studio引用高德地图api后地图显示白屏
- 神奇的static
- Jsp访问JavaBean
- sql的优化
- meike新闻程序作业
- 如何解决java.lang.OutOfMemoryError:PermGen space错误。
- Hexo3.0和Github搭建博客
- 程序员每天该做的事
- Java 反射 使用总结
- v4和v7包冲突解决方法