EDA365电子工程师网

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

作者: zhuxiaoxing    时间: 2013-5-13 10:25
标题: static的作用?麻烦高手帮帮看看啊
下面两个子程序中有什么区别呢?$ G5 c$ o8 d9 ?
void Display(unsigned char FirstBit,unsigned char Num)
3 M& x: A- S7 y: ^9 ?/ N{. q' S1 D0 o, j" T/ j7 Z! J8 `6 J: s
      unsigned char i;2 n2 e/ w- E3 _+ A9 a
          9 Z0 Z  x' {* R, d2 n
          for(i=0;i<Num;i++)8 w, c  t" |& {& P. U
           {
' o: T0 u3 [. \0 ^) K           DataPort=0;   //清空数据,防止有交替重影
" m$ N( M0 o: d9 k5 z           LATCH1=1;     //段锁存2 b+ P# t/ d/ D1 |4 U, T% H
            LATCH1=0;
/ E# i6 U: S, a/ I
5 s* _% H2 ]$ h6 z) Q) {           DataPort=dofly_WeiMa[i+FirstBit]; //取位码 : l0 l5 g+ j' i! F$ I: M$ z: h5 X0 Z
          LATCH2=1;     //位锁存" L. h- o+ A8 d  H. j0 l
          LATCH2=0;
% a' V1 ~$ `! T4 Y! d2 d' c" G5 S6 B9 [- i. z9 z+ b5 Q
           DataPort=TempData[i]; //取显示数据,段码& R) E0 d; H* _( _! O: q  o
          LATCH1=1;     //段锁存8 L  R' A0 a( c$ q0 Z& |
           LATCH1=0;
" s' F* D* D' H# f+ G1 t! V       3 o! f; Q/ u& P* z* t
           Delay(200); // 扫描间隙延时,时间太长会闪烁,7 b& E1 O# X" H" h1 \9 G1 u
                   //太短会造成重影
. |+ e8 v* n0 c8 H) [! d& A: `) f# H( F3 ?: m+ T/ `: s' c
       }
0 b* Q# b- q: |( x) b4 {3 ?* m0 O! K1 R6 p
}
; t5 U8 ^& R7 r; b# a4 V: |/ ?void Display(unsigned char FirstBit,unsigned char Num)2 g' x; [( a2 T8 S8 J
{+ X; M. O1 O3 k
      static unsigned char i;
. V& h: M, G- u) z1 }+ h          
; d  ?/ p/ i8 ~. T8 X5 t% ^                   DataPort=0;   //清空数据,防止有交替重影& |" m# e9 i& {" t/ n& w
               dula=1;     //段锁存
& ?; E6 n& I# |' o- W               dula=0;
5 X- M) l- t/ }+ c2 F* a! w2 ^- e( t
               DataPort=dofly_WeiMa[i+FirstBit]; //取位码
  y- \) U1 j- U" M) a9 N               wela=1;     //位锁存
. n1 g0 q" Q  o               wela=0;- U' b. V9 v  K3 l# t7 e! d' `

- F# z9 P7 L3 g( P               DataPort=dofly_DuanMa[disp[i]]; //取显示数据,段码
5 v9 D: f0 u9 b) k% c               dula=1;     //段锁存+ X# e; ~9 x2 M' o- S
              dula=0;( L8 s, Z0 y$ Q- l. q3 _
               i++;. U) W5 x3 m# _' E# G( x' j0 n
                if(i==Num)% ^" r& I5 J$ ?5 R% j$ C
                        i=0;
% e& ?8 g( z' o}
作者: 开心的萍果    时间: 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电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2