最主要有两点用途:
1、让一个变量长期有效,而不管其是在什么地方被申明。比如:
int fun1()
{
static int s_value = 0;
….
}
那么fun1不管在什么地方被调用,当函数退出后,s_value最后的值将一直会被系统保存(相当于一个全局变量),下次s_value再被用到时,也即当fun1()再次被调用时,s_value初始值将是最近被保存过的值(请注意s_value初始化操作只会被执行一次,即上述s_value =0 这个语句)。
2、避免多个文件使用了相同的变量名而导致冲突
比如有多个文件,分别由几个人独立开发的。假定他们在各自的文件中定义相同的“全局”变量名(仅仅指在他们独自的文件中全局),当系统集成时,由于他们使用了名字一样的“全局”变量,导致有难于遇见的问题。解决这个问题方便的做法就是在各自文件中,在相同的全局变量申明前加上static修饰符。这样系统就会为他们分配不同的内存,互不影响了。
在C语言中static的作用如下:
第一、在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放。
第二、static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。
第三、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0;
(1)不想被释放的时候,可以使用static修饰。比如修饰函数中存放在栈空间的数组。如果不想让这个数组在函数调用结束释放可以使用static修饰
(2)考虑到数据安全性(当程想要使用全局变量的时候应该先考虑使用static)
在C++中static关键字除了具有C中的作用还有在类中的使用
在类中,static可以用来修饰静态数据成员和静态成员方法
静态数据成员
(1)静态数据成员可以实现多个对象之间的数据共享,它是类的所有对象的共享成员,它在内存中只占一份空间,如果改变它的值,则各对象中这个数据成员的值都被改变。
(2)静态数据成员是在程序开始运行时被分配空间,到程序结束之后才释放,只要类中指定了静态数据成员,即使不定义对象,也会为静态数据成员分配空间。
(3)静态数据成员可以被初始化,但是只能在类体外进行初始化,若为对静态数据成员赋初值,则编译器会自动为其初始化为0
(4)静态数据成员既可以通过对象名引用,也可以通过类名引用。
静态成员函数
(1)静态成员函数和静态数据成员一样,他们都属于类的静态成员,而不是对象成员。
(2)非静态成员函数有this指针,而静态成员函数没有this指针。
(3)静态成员函数主要用来方位静态数据成员而不能访问非静态成员。

文章转自:http://bbs.elecfans.com/jishu_1532710_1_1.html

嵌入式C语言static关键字相关推荐

  1. C语言学习及应用笔记之二:C语言static关键字及其使用

    C语言有很多关键字,大多关键字使用起来是很明确的,但有一些关键字却要相对复杂一些.我们这里要说明的static关键字就是如此,它的功能很强大,相应的使用也就更复杂. 一般来说static关键字的常见用 ...

  2. [C语言]static关键字--#define 定义常量和宏--初识指针--初识C语言(四)

    文章目录 前言 一,static关键字 二,#define 定义常量和宏 三,初识指针 总结 前言 本节主要记录初识C语言第四节内容. 内容包括:static关键字------#define 定义常量 ...

  3. c语言的关键字static,C语言static关键字

    1.static 全局变量与普通全局变量的区别: 在定义变量时,全局变量之前再冠以 static 就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式.两者在存储方式 ...

  4. c语言static关键字参数

    static 关键字. 1.static修饰局部变量: ① 整个生命周期延长, ② 静态局部变量只会被初始化一次,以后每一次调用静态局部变量,就会使用上一次调用完保存的值. ③ 只能被作用域的变量和函 ...

  5. C语言static关键字修饰变量及函数时的用法和原理

    目录 一.static关键字修饰局部变量 二.static关键字修饰全局变量 三.static关键字修饰函数 一.static关键字修饰局部变量 在内存中,往往将其分为三个区块,栈区,堆区,静态区.C ...

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

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

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

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

  8. C语言 Static关键字的作用详解

    前言: static 是用来修饰函数和变量的,可以修饰局部变量,全局变量以及函数 一.修饰局部变量  (称为静态局部变量) 来看俩段代码: 对于第一段代码来说,它循环5次,每次调用一下fun()函数, ...

  9. C语言static 关键字总结

    static 关键字总结: 变量可以被static 修饰,意义有发生变化吗? 下面我们看个例子: (1)变量不加 static 修饰 #include <stdio.h>void test ...

  10. 浅谈C语言static关键字 静态变量 函数

    目录 static对变量修饰 局部变量 全局变量 函数 static对变量修饰 局部变量 普通局部变量存储于进程栈空间,使用完毕会立即释放. 静态局部变量存储于进程的全局数据区,即使函数返回,它的值也 ...

最新文章

  1. 笔记本蓝牙显示输入码无效_如何凭借一把键盘游走桌面?米物蓝牙双模键盘
  2. TikTok英国市场你不能不知道的10大数据
  3. 1154:LETTERS
  4. MySQL数据库SYS CPU高的可能性分析
  5. 抖音上测试年龄星座的软件,抖音年龄计算器
  6. 《Python核心编程(第3版)》——1.3 正则表达式和Python语言
  7. 极客修回应“以次充好”报道:内部已经展开调查
  8. arduino动态刷新显示_Arduino驱动TFT彩色触摸屏-有没有更好的方法?
  9. WebView 简单使用方法
  10. Mac安装Qt出现错误Could not resolve SDK Path for ‘macosx‘
  11. pdf资源有密码怎么办?
  12. 九月英语--不同以往的感觉
  13. 计算机病毒模块测试题,计算机病毒分类测试题集
  14. TZOJ--5447: Irrational Division (博弈)
  15. 第九章:iOS应用的界面编辑
  16. 事务四大特性(ACID):原子性、一致性、隔离性、持久性
  17. 创业者的诗,远方和功不唐捐
  18. 30个疯狂的网页设计作品欣赏
  19. 诺基亚衰落的原因及其如何走去困境
  20. 前端后端nginx配置

热门文章

  1. 模式识别与机器学习第六章有监督学习方法
  2. UG标准件库的使用方法
  3. php mysql知识总结_Mysql数据库知识总结(看资料总结出来的)
  4. DLL注入技术之消息钩子注入(HOOK简单的实现)
  5. 传统网络通信模式、RDMA技术、InfiniBand协议、IB卡(IB交换机)之间的关系?
  6. 色彩空间(CIE色度图,SRGB,AdobeRGB...)
  7. java resourcebundle_Java ResourceBundle.getBundle如何加载属性文件?
  8. linux num_fds文件描述符数量限制 too many openfiles 错误
  9. 计算机网络笔记四 无线局域网
  10. ghostscript的坑