找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

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

[复制链接]

31

主题

113

帖子

-1万

积分

未知游客(0)

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

EDA365欢迎您!

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

x
下面两个子程序中有什么区别呢?
3 |, z; A3 Z. Z3 {void Display(unsigned char FirstBit,unsigned char Num)
" m- r- v# y( ^8 |  V{
+ a/ ^/ Z% S  r( o      unsigned char i;
6 T( O  s. c# X2 Z          / I; h7 u9 J; T9 R- _
          for(i=0;i<Num;i++)
1 Z" O% e# I) i. _           {
3 U3 M  c7 \* ?8 q! P- k/ m$ L$ v           DataPort=0;   //清空数据,防止有交替重影
; Y/ q0 C" V' i% Z3 \5 Y           LATCH1=1;     //段锁存
8 i: x4 E. v; o# V; Z            LATCH1=0;
: i" g1 d9 t. ]  r# p! b" T
8 t" Y  J" O; ^6 U( w% h           DataPort=dofly_WeiMa[i+FirstBit]; //取位码
! Y3 R* ^& O( z2 ~: Q7 v/ |/ B/ S          LATCH2=1;     //位锁存9 e9 x6 X( Q9 Q9 O& a) @
          LATCH2=0;
$ i. f1 ~- @- [1 L# g- [( l: g8 z8 g- }8 q+ A5 Q9 C
           DataPort=TempData[i]; //取显示数据,段码# `/ I% R1 r6 {* q, }0 A! l
          LATCH1=1;     //段锁存
" W. ^( E& ?1 U/ u+ l3 J1 {1 }+ D- |3 A           LATCH1=0;
1 q5 v! |8 N4 a9 ]      
/ ~% j: ?1 k6 S5 k7 m8 E           Delay(200); // 扫描间隙延时,时间太长会闪烁,8 H1 X: q* K  e) X6 D
                   //太短会造成重影
. H7 l5 s% {: @1 u  E( M5 I! v$ C% y+ o) m8 b3 r! Z) z
       }
5 [) B: b/ c. y  B& Z% a8 N
5 [! _9 Z2 {" K2 d4 T) s}
9 z- [& b5 k) |7 o2 ~  n4 E4 ]void Display(unsigned char FirstBit,unsigned char Num)+ X  _! S% a$ i4 H* s
{7 X/ K2 h& K1 K9 g
      static unsigned char i;* H; u' R6 Z4 U4 P
           5 ~# x9 i9 I" i
                   DataPort=0;   //清空数据,防止有交替重影
8 h+ D% ^1 u7 |4 {6 p  `               dula=1;     //段锁存0 }  c  {% f4 y$ F
               dula=0;
" w( ]1 V3 h6 \' F
: G$ }" V5 p" G) M& V, _# W8 S! V               DataPort=dofly_WeiMa[i+FirstBit]; //取位码
2 H4 D2 P6 f0 g               wela=1;     //位锁存
1 h  A2 ?  X7 J$ Y( w% |- S- y               wela=0;
- [, S) L5 p2 g8 R& Q; Q7 f! p0 j  n% n. C9 Z. u
               DataPort=dofly_DuanMa[disp[i]]; //取显示数据,段码7 J$ j3 o# B9 T
               dula=1;     //段锁存' m- N8 X6 t0 R) V' ]% M# D6 O, @
              dula=0;9 Z* t8 ^5 ?! r  v
               i++;4 \' U- o! A) S# g4 {4 |" S
                if(i==Num)
7 x: [7 S5 E8 Q( g* h5 I                        i=0;
% C- F7 q; T4 V+ }! s  B4 S}
分享到:  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-9-20 08:44 , Processed in 0.058608 second(s), 32 queries , Gzip On.

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

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

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