找回密码
 注册
查看: 1223|回复: 3
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
下面两个子程序中有什么区别呢?
$ v& ~1 B1 C9 e% z: m; s, V( Nvoid Display(unsigned char FirstBit,unsigned char Num)9 Y* S" z5 _5 l: q$ {
{
3 j1 q3 n2 g& v( @2 t" @      unsigned char i;/ ~3 `9 P& C8 L9 L- C* D6 c
          
+ V" y* [4 L1 b7 Q$ Y2 d          for(i=0;i<Num;i++)
, s/ o& b7 V5 ^+ I" g: V$ B           {
# c, [: u# o: ]9 \( H! m1 v           DataPort=0;   //清空数据,防止有交替重影
0 [3 `/ Q/ A. _           LATCH1=1;     //段锁存! V3 t  o+ u4 z% e9 M. f/ g9 J5 `
            LATCH1=0;1 N6 }, |& m8 \7 p% [
+ }: K% a- o2 H$ O1 W2 ~0 _
           DataPort=dofly_WeiMa[i+FirstBit]; //取位码
( I9 V6 v2 W# x          LATCH2=1;     //位锁存
* f- @" ]. o% y0 p. V          LATCH2=0;
4 ^5 ]5 x3 \3 h8 `
! S' e' p- }3 i- a9 x' B" Y           DataPort=TempData[i]; //取显示数据,段码
% x5 D% {( [/ U; R) u          LATCH1=1;     //段锁存3 [7 E7 M. b% q
           LATCH1=0;
. ^9 o' S; [5 w2 @+ a      
/ p+ k* _' x+ w           Delay(200); // 扫描间隙延时,时间太长会闪烁,% k6 ^2 I+ `) c6 h) ~: s' o
                   //太短会造成重影7 \1 J+ m# Q  E( M% Z' }
6 r1 S: g# _/ ^) p' o% c
       }: b" K) U$ U3 h6 l  Y- ]

8 e# ~- a. X; q2 ]}; A2 L0 m" _4 o& ~! z
void Display(unsigned char FirstBit,unsigned char Num)
8 [5 f7 i& V. g' T2 D& U{
# O6 T& U1 p5 X( L, N      static unsigned char i;
2 }9 Z! h0 |% r  m          
8 U7 P+ e% ~$ H$ a                   DataPort=0;   //清空数据,防止有交替重影
: _4 E% o$ ~% x3 L4 E4 @# }* k* J               dula=1;     //段锁存; p2 }9 o  c3 \' K, T  L
               dula=0;# w+ W3 f5 j! C

6 r- b, m$ _: O( E8 t               DataPort=dofly_WeiMa[i+FirstBit]; //取位码
# V7 @( Z# ?* V0 z5 Z' k               wela=1;     //位锁存9 _0 {. |/ p: j, ^& v6 V
               wela=0;
! T: s- S" F1 O7 h& k& Z
9 s% D2 F8 K  z7 ?2 M( b               DataPort=dofly_DuanMa[disp[i]]; //取显示数据,段码1 e( \* ?  E- k7 ?) w
               dula=1;     //段锁存
0 l- ]& T5 \5 C0 r3 k/ V! ^              dula=0;
7 C* g/ X* L) e( ^" Y- J               i++;
. ^# n7 s* C5 Z- Z& y6 ~& r/ N1 i                if(i==Num)6 `8 {2 R" B' d2 o6 @9 }
                        i=0;; u& d0 g  @: e) u2 _$ P0 Z9 {
}

该用户从未签到

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-6-3 09:00 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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