找回密码
 注册
关于网站域名变更的通知
查看: 1256|回复: 3
打印 上一主题 下一主题

static的作用?麻烦高手帮帮看看啊

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2013-5-13 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
下面两个子程序中有什么区别呢?
. [5 u+ f. g0 ^0 g- z4 s- ?& n1 bvoid Display(unsigned char FirstBit,unsigned char Num)
+ R8 f% _) ~2 F$ r0 {{: }2 w$ P) D) q+ E  `; m
      unsigned char i;
) P, j9 U0 V; G2 w! s. v          2 k. ~5 s( Y* h
          for(i=0;i<Num;i++)$ w" l) y( L9 B8 [/ ~8 A
           { ; N- D7 e8 K& J4 o8 g  f% \* J
           DataPort=0;   //清空数据,防止有交替重影1 V0 l. Y3 _/ X; \- G1 P9 F
           LATCH1=1;     //段锁存
5 V- T# Y, S* @, R* k* g" ]" {            LATCH1=0;# o. c$ A8 v( `: b2 Q9 @

; ^. `3 ~, ^  }" S7 ^( n           DataPort=dofly_WeiMa[i+FirstBit]; //取位码
# y" ~8 G6 Z, @& [; l          LATCH2=1;     //位锁存
" V; c6 h* a' M0 l          LATCH2=0;" D" I' c4 Q& p) Z# P1 B

( X% c& M) [" Y# m2 j6 f           DataPort=TempData[i]; //取显示数据,段码* }; D" h; S: [0 t# k( H
          LATCH1=1;     //段锁存' _* S# T- k7 U' Q
           LATCH1=0;/ B1 b; p! Z/ s6 m/ z0 x7 J) a
       ; W& B, _1 Z1 H1 c: C
           Delay(200); // 扫描间隙延时,时间太长会闪烁,9 M9 S, Z, N3 ~7 @0 N
                   //太短会造成重影* q2 K! O* l+ M$ h5 R- [: O# J3 B

8 Q: ~6 b8 p1 ^* @% n8 a       }! `' \* }2 S- @( h9 m

7 {' D6 o3 ~' e$ B/ V0 I8 e3 ^}. S$ p! E3 X6 R8 T2 i9 f
void Display(unsigned char FirstBit,unsigned char Num)! {% l2 M. ~% [- W6 U
{7 P' s4 J) p1 D2 t5 G$ L
      static unsigned char i;7 `" e6 v; C) q/ x
          
$ R* G5 j' q, ~. k* v                   DataPort=0;   //清空数据,防止有交替重影$ L6 Y+ E/ ]" I/ u1 o+ C
               dula=1;     //段锁存
1 {8 V+ n: g, |, H0 f3 m: y! m               dula=0;4 J) I4 A6 w1 q, G# j+ \. {, V4 b

2 a4 D4 F7 e9 n& W6 z               DataPort=dofly_WeiMa[i+FirstBit]; //取位码 ( h) x; r9 e2 x5 c4 q9 v8 E; j- ^
               wela=1;     //位锁存% k( q7 ?: j8 U6 J# A% P
               wela=0;0 P, F+ C% Z' ?5 C1 x& ^

3 g; f2 f! ~: v) ^  e9 K               DataPort=dofly_DuanMa[disp[i]]; //取显示数据,段码
" n4 ?8 x9 w( z4 H* ^               dula=1;     //段锁存
5 J/ l/ N3 ^( l7 h              dula=0;
# T+ l& V8 b0 y% \               i++;
+ N( v4 y  R* ]                if(i==Num)! I$ v5 z* o, C/ z+ ~5 a
                        i=0;
+ L! c. F, f0 |3 B  X}

该用户从未签到

2#
发表于 2013-5-15 11:22 | 只看该作者
没人气啊,自己百度下static就有答案了

该用户从未签到

3#
发表于 2013-7-10 16:25 | 只看该作者
就是一个静态变量,只是这个函数使用,你也可以定义个全局static 整个C文件都用 别的地方不能extern

该用户从未签到

4#
发表于 2013-11-15 01:53 | 只看该作者
差别在于static unsigned char i  的数据会保存,i 这个变量会被分配固定的内存地址,unsigned char i是不被分配固定的地址的,只有调到时才会分配地址,用后就被清空掉了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-28 14:50 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表