C语言中static和auto用法详解
目录
- static的第一种用法:定义为静态变量
- static的第二种用法:有理说不清,直接代码见真知
- auto的用法:直接代码见真知
- 总结
static的第一种用法:定义为静态变量 何为静态变量?存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。就是只进行一次初始化。不理解?看代码!
代码见真知:
#includeint main(){ void fun(); //定义一个空函数 for(int i=0; i<3; i++) {fun(); //调用函数 } return 0; } void fun(){ int i=0; static int static_i=0; printf("没有加static的结果为:%d\n",i); printf("加了static的结果为:%d\n",static_i); i++; //没有加static,i最终都会被初始化为0 static_i++; //加了static,只初始化一次,后面继续累加 printf("\n"); }
运行结果:
![C语言中static和auto用法详解](http://img.readke.com/220411/1306361G3-0.jpg)
文章图片
由结果可以看出有static的在持续累加,除了第一次没有再初始化。
static的第二种用法:有理说不清,直接代码见真知
#includeint main(){ int i,sum; sum=2; for(i=0; i<3; i++) {//外置模块printf("外置模块为:%d\n",sum); sum++; //内置模块{static int sum=1; //局部重新定义sum的初始值printf("内置模块为:%d\n",sum); sum++; } printf("\n"); } return 0; }
运行结果:
![C语言中static和auto用法详解](http://img.readke.com/220411/13063C437-1.jpg)
文章图片
由结果可见:外置模块和内置模块是互不影响的,这就是static的第二种用法,保持局部一部分稳定,不会随外部的变化而变化。
auto的用法:直接代码见真知
#includeint main(){ int i,sum; sum=2; for(i=0; i<3; i++) {//外部printf("外置模块为:%d\n",sum); sum++; //局部{auto int sum=1; printf("内置模块为:%d\n",sum); sum++; } printf("\n"); } return 0; }
代码看不懂?结合运行结果就懂了:
![C语言中static和auto用法详解](http://img.readke.com/220411/13063B0L-2.jpg)
文章图片
由结果显而易见:外置模块持续累加,内置模块全部为1,与static的第二种用法相比较,auto局部不断进行初始化 ,而static是局部除第一次外不再初始化。
static和auto的相同之处是都能只在局部进行改变,与外置模块互不干涉。
总结 【C语言中static和auto用法详解】到此这篇关于C语言中static和auto用法详解的文章就介绍到这了,更多相关C语言static和auto内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- Linux shell编程(shell循环语句和循环控制介绍和用法全解)
- Linux shell编程(shell基本操作符和条件语句介绍和用法)
- Scala中的Break语句用法示例
- mysql函数|mysql函数 动态语句_自定义函数动态执行SQL语句
- 学习|使用c语言对sql server进行增删改查操作
- ORACLE 查询不走索引的原因分析,解决办法通过强制索引或动态执行SQL语句提高查询速度...
- PHP基本语法经典指南
- C语言中的wait系统调用详细指南
- R语言入门课|R语言使用ifelse函数实战
- 运行gulp错误gulp[22202]src node_contextify.cc 626 static void