如果 static int m=0; 是某函数中的局部变量,那么这个变量只被初始化赋值为0一次, 当这个函数被多次调用时,除第一次被调用时 m 的内容被初始化为0外, 以后每次调用时,m 都会在上一次函数被调用时产生结果的基础上继续运行的。 例如 第一次调用 m被初始化为0, 函数运行结束时 m 的内容为 5, 第二次调用 m的内容就是5,并在次基础上继续运行程序。 如果m是在某函数内部定义的局部变量,则m只在该函数内部有效 m如果是全局变量,就会在定义语句之后的所有函数内有效。
-
非静态的局部变量,在一个函数运行结束时,存储空间就被释放了,所以非静态的局部变量不可能保存变量在上一次函数被调用时产生的内容。 因此,对于静态局部变量: 第一次调用 m被初始化为0, 函数运行结束时 m 的内容为 5, 第二次调用 m的内容就是5,并在次基础上继续运行程序。 对于非静态局部变量: 第一次调用 m被初始化为0, 函数运行结束时 m 的内容为 5, 第二次调用 m的内容仍然被初始化为0,并运行函数,m的内容与前一次被调用的状态无关。