static怎么理解呢?

2019-08-12 17:30发布

u8 KEY_Scan(u8 mode)
{  
static u8 key_up=1;//按键按松开标志 (只进行一次初始化)
if(mode)key_up=1;  //支持连按  
if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))
{
delay_ms(10);//去抖动 
key_up=0;
if(KEY0==0)return KEY0_PRES;
else if(KEY1==0)return KEY1_PRES;
else if(WK_UP==1)return WKUP_PRES; 
}else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1;     
return 0;// 无按键按下
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
24条回答
沉默焚烧
1楼-- · 2019-08-14 16:44
那注释应该看得懂吧。局部static表示运行一次之后,是哪个值,就记下是哪个值了。不用再初始化。
ghw318
2楼-- · 2019-08-14 16:53
 精彩回答 2  元偷偷看……
ghw318
3楼-- · 2019-08-14 21:14
飞岛主 发表于 2015-4-17 21:23
u8 KEY_Scan(u8 mode)
{         
static u8 key_up=1;//按键按松开标志        (只进行一次初 ...

因为,MODE是0.都没有执行到这里
落月枫情
4楼-- · 2019-08-14 23:14
托卡玛克 发表于 2015-1-10 16:55
补充一下:c语言的static在使用位置不同时是不同的,在全局上使用,表明该变量只能在本文件使用,在函数中 ...

正解,顶一下
defhero
5楼-- · 2019-08-15 03:13
ghw318 发表于 2016-9-5 23:00
**** 作者被禁止或删除 内容自动屏蔽 ****

很详细,之前是对static的作用误解了,定义了一个static变量以后,还是可以继续赋值的,只不过再调用时不再执行初始化语句
defhero
6楼-- · 2019-08-15 08:49
多体会,定义了一个static变量以后,还是可以继续赋值的,只不过再调用时不再执行初始化语句

一周热门 更多>