经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
C语言中static和auto用法详解
来源:jb51  时间:2022/1/17 12:17:09  对本文有异议

static的第一种用法:定义为静态变量

何为静态变量?存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。就是只进行一次初始化。不理解?看代码!

代码见真知:

  1. #include<stdio.h>
  2. int main()
  3. {
  4. void fun(); //定义一个空函数
  5. for(int i=0;i<3;i++)
  6. {
  7. fun(); //调用函数
  8. }
  9. return 0;
  10. }
  11. void fun()
  12. {
  13. int i=0;
  14. static int static_i=0;
  15. printf("没有加static的结果为:%d\n",i);
  16. printf("加了static的结果为:%d\n",static_i);
  17. i++; //没有加static,i最终都会被初始化为0
  18. static_i++; //加了static,只初始化一次,后面继续累加
  19. printf("\n");
  20. }

运行结果:

由结果可以看出有static的在持续累加,除了第一次没有再初始化。

static的第二种用法:有理说不清,直接代码见真知

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int i,sum;
  5. sum=2;
  6. for(i=0;i<3;i++)
  7. {
  8. //外置模块
  9. printf("外置模块为:%d\n",sum);
  10. sum++;
  11. //内置模块
  12. {
  13. static int sum=1; //局部重新定义sum的初始值
  14. printf("内置模块为:%d\n",sum);
  15. sum++;
  16. }
  17. printf("\n");
  18. }
  19. return 0;
  20. }

运行结果:

 由结果可见:外置模块和内置模块是互不影响的,这就是static的第二种用法,保持局部一部分稳定,不会随外部的变化而变化。

auto的用法:直接代码见真知

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int i,sum;
  5. sum=2;
  6. for(i=0;i<3;i++)
  7. {
  8. //外部
  9. printf("外置模块为:%d\n",sum);
  10. sum++;
  11. //局部
  12. {
  13. auto int sum=1;
  14. printf("内置模块为:%d\n",sum);
  15. sum++;
  16. }
  17. printf("\n");
  18. }
  19. return 0;
  20. }

代码看不懂?结合运行结果就懂了:

由结果显而易见:外置模块持续累加,内置模块全部为1,与static的第二种用法相比较,auto局部不断进行初始化 ,而static是局部除第一次外不再初始化。

static和auto的相同之处是都能只在局部进行改变,与外置模块互不干涉。

总结

到此这篇关于C语言中static和auto用法详解的文章就介绍到这了,更多相关C语言static和auto内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号