<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 關(guān)于C語言的static 又漲姿勢了

          關(guān)于C語言的static 又漲姿勢了

          作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
          最近學(xué)習(xí)一段代碼,關(guān)于求平均值過濾的,過去使用時,一般是這樣算,先一下子讀出10個值來,求和再除以10,然后返回平均值。

          今天學(xué)到了一種新的求平均值法,不用一下子讀出10個來,而是正常讀,只不過是以前讀的都會記錄保存下來,然后通過移位來更新這10個數(shù)據(jù),

          本文引用地址:http://www.ex-cimer.com/article/201611/322291.htm

          簡單來說 如果 采集的數(shù)據(jù)為(2.0,2.1,2.5,2.3,2.5,2.2,2.5,2.6,5.9,2.7),那么下次采集為 2.5,那么就會將2.0丟掉,2.1為第一位,依次移位實現(xiàn)數(shù)據(jù)的更新。感覺巧妙之級。

          這種方法的代碼實現(xiàn)如下‘

          /*******************************************************************************
          * Function Name : static int _filter(int m)
          * Description :
          * Input :
          * Output : None
          * Return :
          * Attention : None
          *******************************************************************************/
          static int _filter(int m)
          {
          static int flag_first = 0, _buff[10], sum;
          const int _buff_max = 10;
          int i;

          if(flag_first == 0)
          {
          flag_first = 1;

          for(i = 0, sum = 0; i < _buff_max; i++)
          {
          _buff[i] = m;
          sum += _buff[i];
          }
          return m;
          }
          else
          {
          sum -= _buff[0];
          for(i = 0; i < (_buff_max - 1); i++)
          {
          _buff[i] = _buff[i + 1];
          }
          _buff[9] = m;
          sum += _buff[9];

          i = sum / 10.0;
          return i;
          }
          }

          一開始以為 else 后邊的不會執(zhí)行,后來我錯了。

          static有一個特點

          特點: static局部變量的”記憶性”與生存期的”全局性”
          所謂”記憶性”是指在兩次函數(shù)調(diào)用時, 在第二次調(diào)用進(jìn)入時, 能保持第一次調(diào)用退出時的值.
          示例程序一
          #include

          using namespace std;

          void staticLocalVar()
          {
          static int a = 0; // 運行期時初始化一次, 下次再調(diào)用時, 不進(jìn)行初始化工作
          cout<<"a="<++a;
          }

          int main()
          {
          staticLocalVar(); // 第一次調(diào)用, 輸出a=0
          staticLocalVar(); // 第二次調(diào)用, 記憶了第一次退出時的值, 輸出a=1
          return 0;
          }




          關(guān)鍵詞: C語言stati

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();