而static变量,只在声明它的函数内看见,也只有在声明它的函数内可以被修改。即便在函数外或其它函数中有同名的变量,也和它不是同一变量。
和局吵枣姿部变量相比,局部变量在每次调用函数时,变量值都会升绝重置。而static变量,在每次调用函数时,它都会保留这上次调用时最后一次赋值过的值。
总之,static是一种特殊的局部变量,它可以保存函数上次调用时岩斗这个变量的状态。
在单片机C语言中,bita表示定义一个变量a,其类型为bit型,所谓的bit型并薯就是用一位二进制数来表示变量。bit型的取绝困者值为0或1。
static
bit
a表示定义一个bit型的变量a,其尺亩为静态变量,只初始化一次即可。
static(静态) 是一种数据变量的存储方式而已,不存在什么用法之说,但了解它的特性,能帮你写出好程序。静态变量的特性:
1、变量只定义一次(含定义时的初始化值);
2、只在定义范围内有效(其他地方、函数并不认识这个变量);
3、函数结束,变量值不丢失。
变量有 全局变量、局部变量之分;
全局变量在程序中,分配有固定物理存储空间,程序运行过程中,数据不丢失(就是自己有个房子)。
局部变量在程序中,没有固定物理存储空间。一般出现在子函数中,调用子函数,随机分配存储梁册空间,子函数结束后,该空间回收,随机分配给其他函数使用。(就是租屋,你不租了,就租给别人)
有些时候,你又希望这个局部变量能保持,这样你下次回来还能接着算,于是就需要static 这个“静态”功能了。它能让这个分配的空间,一直给你保留着。
也许你会说,用全局变量就好了。是的,没错,它的功能几乎与全局等价羡态了。但为什么不用全局,可能原因有以下2种:
1、全局变量对所有子函数都有效,谁都橡派宏可以修改,可能会超出你的预计范围(就是说,房子虽然是你的,但大家都有钥匙,可以随便进来换换装修,你掌握并不了)
2、移植性高,子函数内的静态局部变量,只需要输出子函数即可。但全局变量,要么需要主文件为你定义这个全局变量,要么就会在多个C文件包含你的头文件时,发生重复定义全局变量问题。
当然,除了静态局部变量,还有静态全局变量,这个用于模块化程序设计里,为了避免其他模块出现同名全局变量问题,就使用了只针对本模块程序有效的 静态全局变量
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)