找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

[复制链接]

31

主题

113

帖子

-1万

积分

未知游客(0)

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

EDA365欢迎您!

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

x
下面两个子程序中有什么区别呢?5 k) P- u7 ?8 a. f% C
void Display(unsigned char FirstBit,unsigned char Num)
* U7 @, t. D5 O/ N2 W{$ x2 B3 I: j  }; T1 a- M; a
      unsigned char i;! t  j8 z* ~' Z1 e
          
1 U4 x! s/ ?) e  |" V          for(i=0;i<Num;i++)2 n6 P- T( Y8 `( W* z9 i" s% D
           {
8 h- U, _$ o% i7 Z           DataPort=0;   //清空数据,防止有交替重影
( w% |  e+ S  Q! @# S           LATCH1=1;     //段锁存" F) c" ?1 P. ]& k7 ]7 f5 Y
            LATCH1=0;  E5 W5 Z6 c; D6 E
* T# s* s( I2 A: y, y0 z, c1 L8 g2 G8 ]
           DataPort=dofly_WeiMa[i+FirstBit]; //取位码 * N5 ^- {5 j" t( v$ t9 m/ i
          LATCH2=1;     //位锁存5 d$ v5 i; e, E4 {5 G  F
          LATCH2=0;- z+ T8 s" @" d& `3 p5 p$ |
% |; [; p: s" `) _
           DataPort=TempData[i]; //取显示数据,段码/ x% s9 d& f- }, \7 U
          LATCH1=1;     //段锁存
, h, |% j0 Y  Z0 J7 E* [6 X           LATCH1=0;3 h/ D  w% Q5 C1 T2 b) g1 a
      
4 W8 ~! N6 ?8 r3 q) `4 u7 `+ n           Delay(200); // 扫描间隙延时,时间太长会闪烁,. T9 o: w$ }; f; E8 x5 X
                   //太短会造成重影7 o3 m& W9 P: ]" Y' V/ ?1 }7 z' O

+ @5 a$ E: Q( e+ }       }
. v& @) p5 h# R" p( G. i4 [% l3 S7 L
1 ?# e6 s, M& f, A4 Q' e}
' c* W! G: ~: j, h8 e( \1 Kvoid Display(unsigned char FirstBit,unsigned char Num)+ t9 }+ o) v! w8 R/ D( N6 y
{, ]7 {! I% `0 j( o0 ?  R
      static unsigned char i;
9 i0 j$ [. P) L( a" j8 D/ f          
% I# i$ H2 T' f' p8 n                   DataPort=0;   //清空数据,防止有交替重影
* T- ]# `3 D# d9 s+ S               dula=1;     //段锁存# T" Q( a: L$ t9 m; f* _
               dula=0;
5 k( G6 R5 I2 N* k& E3 _- b0 L3 x- M( a; P, ~
               DataPort=dofly_WeiMa[i+FirstBit]; //取位码
% `; f" {4 [6 X- h+ G) b: ~               wela=1;     //位锁存* L* S! n7 Y3 U# D7 e' ?
               wela=0;8 Q7 [/ C6 H0 N8 }- p  ?
4 j6 H, ^( n( [8 f
               DataPort=dofly_DuanMa[disp[i]]; //取显示数据,段码8 I8 u& U0 ~. n/ X9 e' |7 R
               dula=1;     //段锁存$ |1 |$ @+ o; z
              dula=0;
/ K( m9 T+ v, t# b               i++;9 [7 a# P. J! r
                if(i==Num)
) l4 Y- {/ B4 z" J* C8 l                        i=0;' o5 @+ d! ?% F6 l
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

2

主题

97

帖子

684

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

33

主题

250

帖子

295

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

0

主题

3

帖子

168

积分

二级会员(20)

Rank: 2Rank: 2

积分
168
2#
发表于 2013-5-15 11:22 | 只看该作者
没人气啊,自己百度下static就有答案了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-9-20 06:26 , Processed in 0.089404 second(s), 32 queries , Gzip On.

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

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

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