/*首先说个最让我震惊的:main里的变量竟然也是局部变量,我的天啊,我可能真读了一个假书。一直都觉得它是全局变量,我可能学了假c语言*/
要搞清全局变量和局部变量的区别,全局变量是程序的各个函数都可以调用的,而局部变量只在函数内部有效.
静态局部变量(static) 静态局部变量定义时前面加static关键字。
总结:
1、静态局部变量和普通局部变量不同。静态局部变量也是定义在函数内部的,静态局部变量定义时前面要加static关键字来标识,静态局部变量所在的函数在多调用多次时,只有第一次才经历变量定义和初始化,以后多次在调用时不再定义和初始化,而是维持之前上一次调用时执行后这个变量的值。本次接着来使用。
2、静态局部变量在第一次函数被调用时创造并初始化,但在函数退出时它不死亡,而是保持其值等待函数下一次被调用。下次调用时不再重新创造和初始化该变量,而是直接用上一次留下的值为基础来进行操作。
3、静态局部变量的这种特性,和全局变量非常类似。它们的相同点是都创造和初始化一次,以后调用时值保持上次的不变。不同点在于作用域不同
载自这个小姐姐样子的人类:小姐姐博客
我也写代码测试了一下:
#include<stdio.h> int main() { fo(); fo1(); fo(); fo1(); } void fo() { static i=1; i++; printf("fo:%d\n",i); } void fo1() { int i=1; i++; printf("fo1:%d\n",i); } /* 输出:fo:2 fo1:2 fo:3 fo1:2 */
剩下的大家自己去看那个小姐姐博客吧,写得挺正常挺好样子。
还有markdown里插入多行代码 是
```
代码段
```
溜。