1. c语言中static变量的赋值问题
static int a = 0; // 运行期时初始化一次, 下次再调用时, 不进行初始化工作如下:
printf(“%d”,a);
a++;
}
int main()
{
staticLocalVar(); // 第一次调用, 输出a=0
staticLocalVar(); // 第二次调用, 记忆了第一次退出时的值, 输出a=1
return 0;
}
(1)c语言的static赋值为0扩展阅读
1、static对全局变量的修饰,可以认为是限制了只能是本文件引用此变量。有的程序是由好多.c文件构成。彼此可以互相引用变量,但加入static修饰之后,只能被本文件中函数引用此变量。
2、static对栈变量的修饰,可以认为栈变量的生命周期延长到程序执行结束时。一般来说,栈变量的生命周期由OS管理,在退栈的过程中,栈变量的生命也就结束。
3、但加入static修饰之后,变量已经不再存储在栈中,而是和全局变量一起存储。同时,离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。
2. c语言static用法
static是静态变量,程序运行时,它的值不会被重新初始化,对于这题来说,没必要把k设成静态的,一般的变量也能计算出来,因为中间没有重新初始化的操作
3. c语言中 static uint8 ucState=0是什么意思
static uint8 ucState=0
static是静态变量申明字,所以首先变量ucState是一个静态变量,初始值为0;
uint8在C语言中是没有这个语句的,所以这之前可能有以下一个申明来定义该宏:
#define uint8 unsigned char
这样的话,全句的意思是:;申明变量ucState为静态8位字节变量,初值为0,一般用于单片机的C51语言中。通用C语言中是没有这个变量类型的。
4. 为什么在C语言中静态变量的初值是0
静态变量的声明点似乎相当于全局变量,按照全局变量的初始化规则来初始化为0