博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
static 静态
阅读量:5361 次
发布时间:2019-06-15

本文共 1048 字,大约阅读时间需要 3 分钟。

摘自:https://blog.csdn.net/Kendiv/article/details/675941

关于static的  ""记忆性""

我们可以用做按键的检测,,,因为按键要有除颤消抖过程

示例程序一

#include <iostream>

using namespace std;

void staticLocalVar()

{
 static int a = 0; // 运行期时初始化一次, 下次再调用时, 不进行初始化工作
 cout<<"a="<<a<<endl;
 ++a;
}

int main()

{
 staticLocalVar(); // 第一次调用, 输出a=0
 staticLocalVar(); // 第二次调用, 记忆了第一次退出时的值, 输出a=1
 return 0;
}

 

 

1. “记忆性”, 程序运行很重要的一点就是可重复性, 而static变量的”记忆性”破坏了这种可重复性, 造成不同时刻至运行的结果可能不同.

2. “生存期”全局性和唯一性. 普通的local变量的存储空间分配在stack上, 因此每次调用函数时, 分配的空间都可能不一样, 而static具有全局唯一性的特点, 每次调用时, 都指向同一块内存, 这就造成一个很重要的问题 ---- 不可重入性!!!
这样在多线程程序设计或递归程序设计中, 要特别注意这个问题.

 

上面提到用静态的记忆性,可以编写按键的消抖程序.

关于静态的记忆性,让我想到一个点子,可以化简程序的:

比如一个程序要播放SD卡里的声音,,SD卡里有各种规格的wav文件,,,虽然都是wav文件,但是每种类型是不一样的...

有16位的wav;有8位的wav;  假设我们只知道SD卡里是wav却不知道是哪种规格的,,所以,我们就需要写程序把wav头文件读进来

然后分别去判断,,,,,,每次播放一个段音乐,我们就要判断一次,,,这样是不是很麻烦,,

既然静态有记忆作用,,,我们就让程序走一遍,,只判断一次,,然后记住这个选择,,,之后就不用再次循环判断了

//

//还有另一种情况,SD卡里有各种各样的音乐,,,每种音乐对应不同的解码算法,,,,在我们切换音乐的时候

需要判断要用那种算法,,之后再播这首曲子的整个过程中就没必要来回判断了,,,我们可以用静态记录算法是哪个

只有切换曲子的时候再次修改静态中记录的算法即可

 

转载于:https://www.cnblogs.com/chulin/p/8966244.html

你可能感兴趣的文章
Eclipse开发android没有R文件的解决办法
查看>>
64位int遇上printf
查看>>
算法导论22章基本的图算法 思考题总结 (转载)
查看>>
javascript操作常见的html标签
查看>>
MVC初级知识之二——Routing路由(以近乎产品源码为例)
查看>>
Mac安装Homebrew记录
查看>>
join和setDaemon
查看>>
在 Visual Studio 2013 中创建 ASP.NET Web 项目(1):概述 - 创建 Web 应用程序项目
查看>>
《JavaScript高级程序设计》读书笔记(三)基本概念第六小节理解函数
查看>>
字在寄存器中的存储
查看>>
搭建基于springmvc,ibatis的工程实现读写分离,配置分离
查看>>
[转]C++ 函数模板特化导致的多重定义链接错误
查看>>
在反射中Member{get{..}set{..}}与Member{get;set;}的区别?
查看>>
PHP和MySQL入门(7)
查看>>
时间选择器-不是日历哦【js】
查看>>
Oracle开发:dba和sysdba的区别
查看>>
Spring常用注解
查看>>
latch release ......
查看>>
String 字符串详解 / 常用API
查看>>
懒加载树[tree]、点击已经加载完成的树[tree]节点,再次加载该节点下一级的所有子节点...
查看>>