前言:

static 是用来修饰函数和变量的,可以修饰局部变量,全局变量以及函数

一、修饰局部变量  (称为静态局部变量)

来看俩段代码:

对于第一段代码来说,它循环5次,每次调用一下fun()函数,而fun()函数每次进去的时候,x的值都为0,所以,当x++后,每次输出的值都为1

对于第二段代码来说,与第一种情况相类似,循环5次,每次输出x的值;但是,与第一段代码不相同的是,x是由static定义的, static对x 只定义一次,x的值不会随着fun()这个函数的结束而被释放掉,直到程序结束,它的生命周期才结束。所以每次fun()函数执行的时候,x的值都会在原来值的基础上加1.

当然,用static修时变量时,其默认值为0

二、修饰全局变量   (称为静态全局变量)

当static修饰全局变量时,只能在当前源文件使用,不能在其他源文件下使用

extern int x:声明x为其他文件的变量;我们可以发现编译不通过,但是如果将static关键字移除,程序就可以通过:

 三、修饰函数  (称为静态函数)

当static修饰函数的时候,此函数只能在当前源文件使用,不能在其他源文件下使用

当fun()函数未被static修饰时,在 源.cpp 中可以正常执行 test.cpp 中的 fun() 函数,程序正常运行

然而,当fun()函数被static修饰时,程序就会出错

四、总结

1.当static修时局部变量时,变量只能被初始化一次,且static静态局部变量,其生命周期为整个进程,直到程序结束。(static修时变量时,默认值为0)

2.当static修时全局变量时,只在当前源文件有效,不能在其他源文件使用

3.当static修时函数时,只在当前源文件有效,不能在其他源文件使用

C语言 Static关键字的作用详解相关推荐

  1. C语言中static关键字的作用详解,全网最透彻

    在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有 ...

  2. c语言 static 关键字的作用

    static 关键字的作用 全局静态变量 局部静态变量 静态函数 类的静态成员 类的静态函数 全局静态变量 在全局变量前加上关键字 static,全局变量就定义成一个全局静态变量. 静态存储区,在整个 ...

  3. integer java关键字_JAVA关键字及作用详解

    Java关键字及其作用 一. 总览: 访问控制 private protected public 类,方法和变量修饰符 abstract class extends final implements ...

  4. C语言static关键字的作用(有三个作用)

    1.具有隐藏的作用 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性. a.c: char a = 'A'; // global variable void msg() ...

  5. C语言 static变量和函数详解

    概述 static关键字在c语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护. 但是对于c语言初学者,static由于使用灵活,并不容易掌握.本文就static在c语言中的应用进 ...

  6. Java类中this关键字和static关键字的用法详解

    今天给大家总结介绍一下Java类中this关键字和static关键字的用法. 文章目录 this关键字用法: 1:修饰属性,表示调用类中的成员变量 2:this修饰方法 3:this表示当前对象的引用 ...

  7. C语言丨关键字enum用法详解,看这篇就够了

    一.关键字enum的定义 enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的集合(这句话其实不太妥当),枚举型是预处理指令#define的替代,枚举和宏其实非常类 ...

  8. c语言rand函数的作用,详解C语言中rand函数的使用

    前言 我们在编程实现算法的过程中,往往需要使用到随机数.由于计算机是一台以逻辑为基础的机器,没法做到真正的随机(大概量子计算机可以?).所以计算机生成的是伪随机数,供我们使用. 我们使用C语言的ran ...

  9. java中strictfp关键字,java strictfp关键字用法大全详解

    一.strictfp关键字简介 strictfp是Java中提供的一个保留关键字,该关键字是从这第java JDK2版本儿开始出现的一直沿用到现在,只不过很多情况下都不怎么使用,所以容易被大家遗忘,因 ...

最新文章

  1. 为什么模型复杂度增加时,模型预测的方差会增大,偏差会减小?
  2. npm升级package.json依赖包到最新版本号
  3. JSP标准标签库(JSTL)--简介
  4. 熊猫分发_实用熊猫指南
  5. 基于dnn的车牌识别_自然场景中文文字识别,身份证火车票都能识别
  6. 【BZOJ-2299】向量 裴蜀定理 + 最大公约数
  7. Microsoft Lync
  8. 20 Tips to Simplify Your Digital and Online Life
  9. yield用法详解——最简单,最清晰的解释
  10. 第六篇 | 解决linux环境中mysql默认端口3306无法连接问题
  11. python爬虫入门实例
  12. 基于DDPG的智能交通灯控制算法
  13. z变换解差分方程例题_Z变换及差分方程的求解
  14. 02Windows日志分析
  15. 如何制作一个蓄力跳的功能
  16. Microsemi Libero SoC 教程1 (Libero开发环境)
  17. Python解答多元线性方程组
  18. 教授专栏31 | 许佳龙: 疫下3观察--看香港科技应用短板
  19. 2022年的ISTQB,你考了没?
  20. java-求矩形(长方形)的周长和面积案例

热门文章

  1. python制作动态心电图_用python制作动态图表看全球疫情变化趋势
  2. 用Flutter改造ZS项目小记二:跳转至首页
  3. 十大SRC平台与SRC行业安全测试规范
  4. 计算机科学与物流工程国际学术会议,刘功婷-第五届信息科学、计算机技术与交通运输国际学术会议-交通运输学术论坛(ISCTT-IST 2020)...
  5. 万顿思电商:刚开的拼多多店铺怎么注销?
  6. 卸载/关闭/使无效intel dptf (Intel(R) Dynamic Platform and Thermal Framework Generic Participant)
  7. TechSmith Camtasia Studio 9录屏软件提示video codec open failed 错误的解决方案
  8. 阿里云重启mysql_阿里云RDS Mysql 5.6 ECS自建从库(不锁表,不重启)
  9. 思维导图与概念图有什么区别
  10. 关于HDMI之TMDS的硬件总结