汗颜呀,static还能这样用。

2020-01-27 11:50发布

  1. void Init_system(void) REENTRANT
  2. {
  3.          unsigned char i;
  4.         P1=255;
  5.        if(i==0)
  6.             {
  7.                  static unsigned char b=25;
  8.                  b++;      //前后多次调用Init_system()函数,此处b的值会作累积。
  9.                  P1=b;
  10.             }
  11.        else
  12.            {
  13.                  P1=0;
  14.            }
  15.       TMOD &= 0xF0;
  16.       TMOD |= 0x01;
  17.       TH0 = TIMER_20MS_TH0;
  18.       TL0 = TIMER_20MS_TL0;
  19.       ET0 = 0;
  20.       EA=0;
  21.      TR0 = 0;
  22. }
复制代码且看上面的代码。
我一直以为static只是用来限制文件中函数和变量的作用域、函数体内变量的作用域,同时对变量还起到不消亡的作用。
我还真的想不到还能用在复合语句内对变量定义使之“不消亡”
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
41条回答
jz701209李
1楼-- · 2020-01-31 16:00
学习一下。。。。。
myxiaonia
2楼-- · 2020-01-31 18:46
 精彩回答 2  元偷偷看……
myxiaonia
3楼-- · 2020-01-31 20:10
twitter 发表于 2013-5-10 13:09
从我的理解上,按代码块限定局部变量有效范围有2个意义:

1. 从语法功能上说,能够使局部变量有效范围粒 ...

所言极是 我现在写程序 能用寄存器的都用寄存器传递值,不去访问内存
bailao99
4楼-- · 2020-01-31 22:09
学习了,谢谢楼主分享!
ya496928541
5楼-- · 2020-02-01 00:27
越发的发现一句话的真理了:“吾生也有涯而知也无涯”了!!!!!
biansf2001
6楼-- · 2020-02-01 04:24
作用域以及静态变量。在C++里很常见啊。不知道有啥特别的。
C里没这样用过,都是提前定义的。
静态变量好像必须给初值吧,要不会警告的

一周热门 更多>