找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

[复制链接]

31

主题

113

帖子

-1万

积分

未知游客(0)

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

EDA365欢迎您!

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

x
下面两个子程序中有什么区别呢?+ T" m* U' l( e7 ]
void Display(unsigned char FirstBit,unsigned char Num)" p0 a! Q( x2 R) U" F
{
; T1 G, r& \# R& Q      unsigned char i;2 S: Z. v4 }1 O: K+ g
          ; E) i3 F1 }8 o
          for(i=0;i<Num;i++)
; `8 @- t6 l$ }# w- A' \4 [           { 4 l  l& D5 ]! Z+ M; O$ s
           DataPort=0;   //清空数据,防止有交替重影
+ D% ^: h. G+ C! Z4 L           LATCH1=1;     //段锁存+ g! v* S2 _  \
            LATCH1=0;
( e$ Y9 d8 Z! k; c$ t
1 ?" M4 |5 r" F* `- \3 q$ J* }           DataPort=dofly_WeiMa[i+FirstBit]; //取位码
6 {* ?. o. L2 [: P# A# k: F          LATCH2=1;     //位锁存3 E3 h" ^! x% p2 ~! b
          LATCH2=0;$ b1 S% v* P6 n
/ i) n1 r0 v0 h+ C1 B# f- O# l! b0 `7 @$ V
           DataPort=TempData[i]; //取显示数据,段码" i5 a. Q/ R7 V# F) D" G$ c
          LATCH1=1;     //段锁存
+ ?$ s8 U# T8 ~- q           LATCH1=0;, x; a8 D! p6 ^
       * F% {3 |( w( n( ~3 `) \
           Delay(200); // 扫描间隙延时,时间太长会闪烁,
. n, G6 ~, F1 V                   //太短会造成重影
$ v0 G: i9 X; {! i
1 |# y5 c( [8 w# {/ z! I' G& C, C       }0 Z  F+ r- _$ l4 Y0 g, y8 C  C1 d  k  A- k

  d; O; F: P; `0 r1 x! |}
) @( V  Q! U5 V- N( c$ [( A: A( |void Display(unsigned char FirstBit,unsigned char Num)
( h; s: I* c, K" Q! z% U/ T{- n# N. t' p) T( c' ~% n& \" n7 g) D
      static unsigned char i;
/ @) q+ c* |; U, k8 R) y/ d           % s: n0 w0 x! K* K. F7 M
                   DataPort=0;   //清空数据,防止有交替重影2 \3 B  m. _+ [9 o
               dula=1;     //段锁存+ T0 b' A5 j1 K1 ~+ ?) p; g) d" _
               dula=0;6 X! [5 d% z2 M3 ^3 }6 s

2 m+ K" ^5 Z' f/ ?               DataPort=dofly_WeiMa[i+FirstBit]; //取位码 * c5 p. K- Q' X
               wela=1;     //位锁存
7 A2 \  v! s: u! b2 ^+ y4 _               wela=0;
: k0 t2 m8 h& g- t: F; K
) A4 i, J: A, t. h8 I               DataPort=dofly_DuanMa[disp[i]]; //取显示数据,段码% d& r) q& t9 v, j9 @8 q0 v1 F
               dula=1;     //段锁存6 I$ n9 p6 o2 o+ U8 Y/ T2 H: C+ s
              dula=0;
% c" W3 Q8 m! @% h+ Y' y2 j+ }  M               i++;2 O! K( ?0 Q1 g3 c1 A
                if(i==Num)5 L0 t* I6 e6 {* k! D( V
                        i=0;
/ I9 O8 u! o7 `8 i3 K5 H}
分享到:  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-2 21:46 , Processed in 0.055337 second(s), 32 queries , Gzip On.

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

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

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