EDA365电子工程师网

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

作者: zhuxiaoxing    时间: 2013-5-13 10:25
标题: static的作用?麻烦高手帮帮看看啊
下面两个子程序中有什么区别呢?% b4 H8 [' c+ f
void Display(unsigned char FirstBit,unsigned char Num)8 M9 [& Y$ H6 o. z  x
{! H9 ~3 o, a7 Y' M
      unsigned char i;
1 m; @6 i- ^2 \% U$ u          
# t: b. l7 Q" w5 }          for(i=0;i<Num;i++)
+ N& g7 h: r9 v% D( ~# X! r           { . I0 k- m. G7 N( ^$ |  x
           DataPort=0;   //清空数据,防止有交替重影- z' {9 S+ D3 a6 c
           LATCH1=1;     //段锁存7 ]) k% l& p% y1 [
            LATCH1=0;
( F$ S/ r3 Q3 _( h: W- z
% e, Q3 I, U0 x           DataPort=dofly_WeiMa[i+FirstBit]; //取位码
; M( b. ^' y4 D( T0 X          LATCH2=1;     //位锁存
5 U9 a% I5 A; _" f) {* W) l          LATCH2=0;
% z/ ]3 w) w  q$ N
( j# S( }0 M- o) f' C           DataPort=TempData[i]; //取显示数据,段码4 D) G% ]3 z' e) p
          LATCH1=1;     //段锁存& {/ P  ?! R; J6 Z  V
           LATCH1=0;
% D! _& E- F1 I0 R* F/ z      
2 O- T* m7 W: X3 R; z" ]) K           Delay(200); // 扫描间隙延时,时间太长会闪烁,
5 J3 ~6 C1 X; o                   //太短会造成重影. }1 S, c' G; u+ |1 t/ z% F

+ p9 \: h8 k& V9 m/ }. O       }* D  |, B0 h" C7 c7 g
" @9 g# d1 ^6 x. o$ k
}9 X1 |! L3 P" R& z4 b
void Display(unsigned char FirstBit,unsigned char Num)3 F" E7 `5 J0 E, {# r  Z/ A9 n- ?: E
{' w# }; k4 z) Q, C4 G
      static unsigned char i;
3 V& X' q- d5 k: n0 z% W  O           # Y1 H' t) o  d; b$ C( a
                   DataPort=0;   //清空数据,防止有交替重影
9 L& C; s; C) C& l' d0 m9 R               dula=1;     //段锁存
  W, n: d/ R1 |* C. v4 Q               dula=0;! _& v! U2 D* i. [# t% A! T1 ?
& y* Z0 ]: V  y8 p- U; m1 Q; p
               DataPort=dofly_WeiMa[i+FirstBit]; //取位码 0 D2 V2 W5 [+ r3 a( G' m
               wela=1;     //位锁存0 r- n" A# w2 a6 Y2 h1 ~/ E( @6 o
               wela=0;1 @$ N" \# p3 H- \: U9 |6 S
4 n- F# g, O$ o: a3 j+ C: |' L
               DataPort=dofly_DuanMa[disp[i]]; //取显示数据,段码5 M  V5 u8 j- n0 u* L% M0 R
               dula=1;     //段锁存
/ o7 E+ W* p, p4 U  I( E, k/ w* G7 \              dula=0;
8 S  q, A1 G( f. G% x7 {               i++;; O5 P. j2 v# y' Q, @6 P% s
                if(i==Num)
$ Y1 S& U$ {$ q! o. W' Z                        i=0;
+ z" W% C- m! u( a  g" s" C1 C}
作者: 开心的萍果    时间: 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.elecnest.cn/) Powered by Discuz! X3.2