找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 760|回复: 3
打印 上一主题 下一主题

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

[复制链接]

31

主题

113

帖子

-1万

积分

未知游客(0)

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

EDA365欢迎您!

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

x
下面两个子程序中有什么区别呢?* M+ j$ d3 U; h( y/ d. x9 M
void Display(unsigned char FirstBit,unsigned char Num)
7 p$ [4 G3 O/ f9 a' s{7 M& R7 V/ g( y% n) o( H" b* w
      unsigned char i;
4 I( f0 D+ ^2 |- X0 S' j4 F          
  P/ [  V1 p: b! D          for(i=0;i<Num;i++)
1 i* ^8 ~6 H& h" M5 C2 |, Y2 _3 s! U           {
; E* X+ x' ]3 V& \0 k! q' D3 W, ^6 Q           DataPort=0;   //清空数据,防止有交替重影8 X4 \8 e7 l7 m/ b' j2 K* V
           LATCH1=1;     //段锁存
* y" A% X8 y& I' G5 q, T5 X& }. p3 S            LATCH1=0;
' K3 p5 \6 y% U" M( Z9 `9 `! M
2 ?( y+ {9 k7 z1 u           DataPort=dofly_WeiMa[i+FirstBit]; //取位码
' T3 T: _  H$ J" j1 Z          LATCH2=1;     //位锁存
$ E" o7 M) a7 C3 g          LATCH2=0;: M2 F9 ?5 o1 Q4 D  v' ~
6 e* q* G! r: |8 m
           DataPort=TempData[i]; //取显示数据,段码! z' Z$ k0 g& T9 m5 N9 }8 n
          LATCH1=1;     //段锁存
; K4 ]2 f# Y4 ]           LATCH1=0;8 G5 w/ f* N9 X  n' N" W
      
7 L# l" y, `! U( _9 C           Delay(200); // 扫描间隙延时,时间太长会闪烁,) {! j' k' Q1 n  ^: B
                   //太短会造成重影" ?8 g+ r* ]" y; d

4 C1 o, X! ]% V" m       }
/ v- K6 d+ @1 g  D' d/ K
- u! x0 d2 m: o0 i}' `0 Q0 o- H1 C
void Display(unsigned char FirstBit,unsigned char Num)
9 @- l% F- ~# [# F{, Y2 v9 c. M1 F4 P/ P  O* j/ d. l
      static unsigned char i;
+ k4 s6 c$ A! a. b" L           2 B' H  k2 d9 p
                   DataPort=0;   //清空数据,防止有交替重影2 ^# i; `4 G0 Q/ z" L
               dula=1;     //段锁存7 ~0 a( H8 W! \" F" i: {* g/ g0 `
               dula=0;) }4 R9 D$ ?5 M, a$ ?
5 B' B( T( ^$ q, p9 O; B( F
               DataPort=dofly_WeiMa[i+FirstBit]; //取位码
3 i& `; P6 K5 r" C% }  ]3 G( Y9 `, U               wela=1;     //位锁存
+ i3 E  c: X5 s               wela=0;
  H$ e+ Y& W( ?6 ~& [, N8 e, P0 W, j8 f+ N. j8 c5 y( T
               DataPort=dofly_DuanMa[disp[i]]; //取显示数据,段码
/ t5 x! B+ a) h: e               dula=1;     //段锁存" Y7 k# ^6 P; D8 d. Q2 r) H
              dula=0;
( S1 y' _4 U; t3 S7 n/ K% _               i++;
& Z+ @' \' b3 v" C: F                if(i==Num)% U- O; |. f) T6 X
                        i=0;" ?4 i5 i& r6 [" h/ A- V
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

0

主题

3

帖子

168

积分

二级会员(20)

Rank: 2Rank: 2

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

33

主题

250

帖子

295

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

2

主题

97

帖子

684

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-8 21:08 , Processed in 0.078456 second(s), 32 queries , Gzip On.

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

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

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