找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

[复制链接]

31

主题

113

帖子

-1万

积分

未知游客(0)

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

EDA365欢迎您!

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

x
下面两个子程序中有什么区别呢?0 d- y9 R# \) `6 M' L1 c( `
void Display(unsigned char FirstBit,unsigned char Num)- S% h% j4 S2 Q$ W: b
{
: C; Z, I" b& P      unsigned char i;
$ M3 l1 w. W8 P( L( j          " b. [( g$ H) @' h  m; {
          for(i=0;i<Num;i++)! D3 {( B! z. P0 z% u. W
           {
  \- L3 d) x1 r3 \& a           DataPort=0;   //清空数据,防止有交替重影- M/ c) |3 y, k( `) T
           LATCH1=1;     //段锁存2 b" n: T8 n3 h- g( ^. `/ N
            LATCH1=0;# z! i! |0 W. R0 i
' S1 u- _# ~( D' }5 N5 m
           DataPort=dofly_WeiMa[i+FirstBit]; //取位码
5 v' S5 }2 p8 Y9 h' q4 [          LATCH2=1;     //位锁存% A3 Z) l* \! z4 ]4 R( n7 y6 x
          LATCH2=0;: s6 _% @! L) _" @

, l* _# g( H* S) o* k( P1 d           DataPort=TempData[i]; //取显示数据,段码
0 Y+ {0 Q/ }, D/ N# X' S2 |2 y. r          LATCH1=1;     //段锁存
2 f. l% L1 M1 |  S' h6 a! d4 b. o8 c           LATCH1=0;, j- J. e* ~5 [! |  |' T9 m9 E
      
; E6 b7 `5 Q7 s1 y6 i* \           Delay(200); // 扫描间隙延时,时间太长会闪烁,, Z& Q$ W9 I. N) [
                   //太短会造成重影
. k+ [8 A- t5 ^. x8 A
9 X$ }% d( d/ w  \6 w" r       }) v! h! W- D0 V& _- j

9 L3 _! E  r1 b8 O) J) b6 |}8 P1 |' O% x6 N& r8 Y
void Display(unsigned char FirstBit,unsigned char Num); {' x) y! }" g
{2 H: t. w8 K- g/ I; B6 l, F, I8 G
      static unsigned char i;
" I. c( d- y9 Z* A$ R& k6 ~) A          
9 ^' s8 s2 Z: \" ], b% E. z# `) n                   DataPort=0;   //清空数据,防止有交替重影
) n! h% Q6 \! @( F6 o               dula=1;     //段锁存
5 M/ h2 f# [% P- b: Q' M$ |               dula=0;
. n, A% s6 {0 j' U" k, c) V6 |* _/ i7 L+ @
               DataPort=dofly_WeiMa[i+FirstBit]; //取位码 & F6 Z  K( ?! d
               wela=1;     //位锁存- _3 r+ C. k6 ~, n; g! C* T
               wela=0;9 w8 j4 _' K" g& k
8 q7 l! s' A4 \5 a+ V/ }5 Q
               DataPort=dofly_DuanMa[disp[i]]; //取显示数据,段码
0 p) y) J  ?; Y; B% C7 x9 n2 p               dula=1;     //段锁存1 P$ W* V. V3 P' m- x# a
              dula=0;0 I% s$ ~" a; p1 t
               i++;
/ w5 I% H2 I' d. {" o, t( Y) V                if(i==Num)3 J# l# ^$ z. V) E* n, D# b
                        i=0;
* \8 \# {; I) `/ d" w* `( G}
分享到:  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, 2025-2-3 01:01 , Processed in 0.057191 second(s), 32 queries , Gzip On.

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

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

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