前言:

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. php rabbmq教程_RabbitMQ+PHP 教程一(Hello World)
  2. css margin居中的问题
  3. Netty专题-(3)NIO网络编程
  4. REST框架的问题--备忘
  5. Flink SQL Client中的Chained (Event) Time Windows
  6. 关于数据可视化的思考小结
  7. 单片机小白学步系列(四) 模拟电路、传统数字电路与单片机
  8. [单反六]查看快门数
  9. illegal text-relocation
  10. 5 万条微信语音升入太空;阿里京东否认停止社招;雷军开怼华为 | 极客头条...
  11. 《信息管理学基础》——娄策群(第二版)第一章答案
  12. C++求100以内中的所有素数
  13. 社区列表根据关注人数排序(排行榜)的实现思路整理
  14. js 函数传参改变div属性
  15. 计算机点击管理无效,我的电脑有任务管理器但是点击却没反应是怎么回事
  16. Android 客户端Socket 与 Java服务端ServerSocket
  17. 话单数据采集简单了解
  18. Android tcp与网络调试助手初入了解
  19. Windows 2012 always on 读写分离集群搭建配置
  20. Hive 窗口函数大全

热门文章

  1. 200块享受高音质TWS蓝牙音乐
  2. 相机 - 01 基本元件
  3. 微信上线“密信”新功能:聊天可以加密了?
  4. 前端代码规范(静态检查)工具
  5. OpenCV+海康威视摄像头的实时读取
  6. js基本数据类型及判断方法
  7. Excel 版本对应
  8. 48. SSRF篇——SSRF原理+利用+防御
  9. 从TrackPopupMenu(创建快捷菜单的函数)看菜单消息路由机制
  10. mate7 android 5.0,强烈恳求mate7能升级到安卓5.0!!!!