EDA365电子论坛网

标题: static的作用?麻烦高手帮帮看看啊 [打印本页]

作者: zhuxiaoxing    时间: 2013-5-13 10:25
标题: static的作用?麻烦高手帮帮看看啊
下面两个子程序中有什么区别呢?
- C) l3 r' p- }  V- [) I3 Bvoid Display(unsigned char FirstBit,unsigned char Num)
% X+ L" W) b! d) @# D{
- p# ]9 z+ ^! {+ J" B! B      unsigned char i;
) ^+ D- V3 k& I6 N          
, b: N0 ~9 |$ k2 o          for(i=0;i<Num;i++)  }2 ]6 v/ a: v6 d9 N$ H
           {
" ?5 \& }; ]; u: C* Q, i           DataPort=0;   //清空数据,防止有交替重影
8 l8 x# z% O) I% |+ O$ P           LATCH1=1;     //段锁存" Z5 A! W/ }. n: D
            LATCH1=0;
( K0 P5 v: k4 W8 [8 W8 G% \) r2 m' q( w
           DataPort=dofly_WeiMa[i+FirstBit]; //取位码 5 j, A3 ~1 N* K$ M: s7 |# Z
          LATCH2=1;     //位锁存
* ~7 h2 l* P* p! {9 l7 e' S+ x          LATCH2=0;
- H2 r" f7 J) K1 N6 m0 s6 g, `& b, K- F  ^) I* g% f
           DataPort=TempData[i]; //取显示数据,段码% @! z9 `$ X4 s- L; K
          LATCH1=1;     //段锁存) Y- C8 I- [$ q5 K
           LATCH1=0;1 B- L0 e0 P! d! r6 K" Q* ?
      
/ V, N# q* L/ V, N3 @9 H4 @+ m, S           Delay(200); // 扫描间隙延时,时间太长会闪烁,
3 g3 y' h  @( b! p# T                   //太短会造成重影" }+ L6 o+ z+ G, H% c& R
( _" B$ R+ N$ |( B5 n+ c3 Y; F
       }4 c. s# ^. r6 D$ U
- j! A( ?8 D+ A' ?, \& L
}
% ?: H. P3 Z% o5 Qvoid Display(unsigned char FirstBit,unsigned char Num)
8 a+ d& Y0 [6 l5 R5 ?$ s0 x{2 o0 }; \% i, B  d
      static unsigned char i;4 i8 G, v: ^9 J0 m& u7 E2 e
          
8 [* I2 F, f3 f; q+ P$ E                   DataPort=0;   //清空数据,防止有交替重影* c. y. Z& n1 X% v' ^) @
               dula=1;     //段锁存/ R% \1 K# Q$ D% |& f! [, z" }
               dula=0;- L9 Z* `+ H: \+ c
* Y$ F' W9 p( }. H1 j; l- H
               DataPort=dofly_WeiMa[i+FirstBit]; //取位码
: R, |( \2 b# v               wela=1;     //位锁存) G. U! c6 b3 I* m- f
               wela=0;& ?: q# [& V/ ?% k+ u3 C
/ O+ L7 K/ l) m2 S( j# ^: O/ G
               DataPort=dofly_DuanMa[disp[i]]; //取显示数据,段码2 t, k) n, K; ~+ Y
               dula=1;     //段锁存
9 g4 J1 Z8 S& m              dula=0;
2 Y6 U3 K2 Y$ m               i++;
) l6 I2 Z% }; f- b                if(i==Num)) A$ m) {  B) G( s0 ?: K0 |
                        i=0;
# L, h4 A, n) J! \& {5 ]  x}
作者: 开心的萍果    时间: 2013-5-15 11:22
没人气啊,自己百度下static就有答案了
作者: whq001    时间: 2013-7-10 16:25
就是一个静态变量,只是这个函数使用,你也可以定义个全局static 整个C文件都用 别的地方不能extern
作者: 天才小痴    时间: 2013-11-15 01:53
差别在于static unsigned char i  的数据会保存,i 这个变量会被分配固定的内存地址,unsigned char i是不被分配固定的地址的,只有调到时才会分配地址,用后就被清空掉了!




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2