找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

[复制链接]

31

主题

113

帖子

-1万

积分

未知游客(0)

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

EDA365欢迎您!

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

x
下面两个子程序中有什么区别呢?% K" A1 B5 S. }
void Display(unsigned char FirstBit,unsigned char Num)- R4 K7 S2 T' {2 C' P) E) ?3 W
{3 v) N) c4 b( |; K9 _0 m% x% ?
      unsigned char i;
4 V+ x; q2 m. u% [9 m1 f+ L( o          
( [% t7 o, X- a1 d* u$ |          for(i=0;i<Num;i++)
8 R' k) E/ z/ k/ x           {
/ [8 U1 c' F4 K8 _/ u. J6 f           DataPort=0;   //清空数据,防止有交替重影2 ~& {  i) `7 j* W! n$ A
           LATCH1=1;     //段锁存) A) q1 b& V. b
            LATCH1=0;4 T2 y+ ]+ a( I; i
& T" g0 v" G2 X7 `* G2 Z
           DataPort=dofly_WeiMa[i+FirstBit]; //取位码
+ Y2 b7 g4 e- c9 K5 _- i& z; h          LATCH2=1;     //位锁存
* B( F5 K2 m8 i3 ?& Y, s0 Y          LATCH2=0;
, W" V3 T7 n5 O+ [9 t  x* m  |0 r/ \. N7 R$ j8 G# I) L8 r
           DataPort=TempData[i]; //取显示数据,段码
* Z1 ~6 N& s; B8 J          LATCH1=1;     //段锁存
( i* \) t1 j' E; q           LATCH1=0;
& }& X' e- x4 r0 ^2 d0 M      
; z( f3 }: Z- P# s2 o  s           Delay(200); // 扫描间隙延时,时间太长会闪烁,
0 l8 u  o4 Q. l                   //太短会造成重影0 r( J3 ^7 {$ w/ R' U
3 |5 `5 z) Z. s8 V' N9 {7 f
       }1 U1 w5 o6 |3 b9 t. Q9 ]! o/ z" q
1 C/ d: s2 W0 r' I5 n9 f
}( J) ^' Q# B( {- P- g+ T2 }
void Display(unsigned char FirstBit,unsigned char Num)5 f* h  y( V- e' t8 u  E8 Q0 S; M
{1 X. B4 Z# a- o$ q
      static unsigned char i;- ~. k- F; g' r- w5 W
           8 {5 c" A. R+ ~. y- b7 o7 \* Y8 s
                   DataPort=0;   //清空数据,防止有交替重影
9 j% Y. F$ _( e( y! G               dula=1;     //段锁存
4 F3 m& C; \# K. i+ h( k               dula=0;" K( A: C5 M# b# J, q
0 e& \5 O! b- [) e  G
               DataPort=dofly_WeiMa[i+FirstBit]; //取位码
, J7 r5 x3 ^6 e) s6 ^               wela=1;     //位锁存
1 r7 Q- U8 n9 P/ |; e4 q8 P               wela=0;* A9 f! M: S# f) d
2 G& I% U* h0 t0 k
               DataPort=dofly_DuanMa[disp[i]]; //取显示数据,段码/ J8 f$ Q, i0 A
               dula=1;     //段锁存& C6 n: t4 v5 r* x+ }
              dula=0;
: s) U+ H- A! e               i++;0 c" |; f1 @+ S  r7 a
                if(i==Num)3 l) X) ^4 e) f, u* D2 W& t
                        i=0;  o! L, y$ ]7 u7 C4 K1 ~6 w
}
分享到:  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, 2025-2-3 03:45 , Processed in 0.056176 second(s), 32 queries , Gzip On.

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

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

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