嵌入式C语言static关键字
最主要有两点用途:
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关键字相关推荐
- C语言学习及应用笔记之二:C语言static关键字及其使用
C语言有很多关键字,大多关键字使用起来是很明确的,但有一些关键字却要相对复杂一些.我们这里要说明的static关键字就是如此,它的功能很强大,相应的使用也就更复杂. 一般来说static关键字的常见用 ...
- [C语言]static关键字--#define 定义常量和宏--初识指针--初识C语言(四)
文章目录 前言 一,static关键字 二,#define 定义常量和宏 三,初识指针 总结 前言 本节主要记录初识C语言第四节内容. 内容包括:static关键字------#define 定义常量 ...
- c语言的关键字static,C语言static关键字
1.static 全局变量与普通全局变量的区别: 在定义变量时,全局变量之前再冠以 static 就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式.两者在存储方式 ...
- c语言static关键字参数
static 关键字. 1.static修饰局部变量: ① 整个生命周期延长, ② 静态局部变量只会被初始化一次,以后每一次调用静态局部变量,就会使用上一次调用完保存的值. ③ 只能被作用域的变量和函 ...
- C语言static关键字修饰变量及函数时的用法和原理
目录 一.static关键字修饰局部变量 二.static关键字修饰全局变量 三.static关键字修饰函数 一.static关键字修饰局部变量 在内存中,往往将其分为三个区块,栈区,堆区,静态区.C ...
- c语言 static 关键字的作用
static 关键字的作用 全局静态变量 局部静态变量 静态函数 类的静态成员 类的静态函数 全局静态变量 在全局变量前加上关键字 static,全局变量就定义成一个全局静态变量. 静态存储区,在整个 ...
- C语言static关键字的作用(有三个作用)
1.具有隐藏的作用 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性. a.c: char a = 'A'; // global variable void msg() ...
- C语言 Static关键字的作用详解
前言: static 是用来修饰函数和变量的,可以修饰局部变量,全局变量以及函数 一.修饰局部变量 (称为静态局部变量) 来看俩段代码: 对于第一段代码来说,它循环5次,每次调用一下fun()函数, ...
- C语言static 关键字总结
static 关键字总结: 变量可以被static 修饰,意义有发生变化吗? 下面我们看个例子: (1)变量不加 static 修饰 #include <stdio.h>void test ...
- 浅谈C语言static关键字 静态变量 函数
目录 static对变量修饰 局部变量 全局变量 函数 static对变量修饰 局部变量 普通局部变量存储于进程栈空间,使用完毕会立即释放. 静态局部变量存储于进程的全局数据区,即使函数返回,它的值也 ...
最新文章
- 笔记本蓝牙显示输入码无效_如何凭借一把键盘游走桌面?米物蓝牙双模键盘
- TikTok英国市场你不能不知道的10大数据
- 1154:LETTERS
- MySQL数据库SYS CPU高的可能性分析
- 抖音上测试年龄星座的软件,抖音年龄计算器
- 《Python核心编程(第3版)》——1.3 正则表达式和Python语言
- 极客修回应“以次充好”报道:内部已经展开调查
- arduino动态刷新显示_Arduino驱动TFT彩色触摸屏-有没有更好的方法?
- WebView 简单使用方法
- Mac安装Qt出现错误Could not resolve SDK Path for ‘macosx‘
- pdf资源有密码怎么办?
- 九月英语--不同以往的感觉
- 计算机病毒模块测试题,计算机病毒分类测试题集
- TZOJ--5447: Irrational Division (博弈)
- 第九章:iOS应用的界面编辑
- 事务四大特性(ACID):原子性、一致性、隔离性、持久性
- 创业者的诗,远方和功不唐捐
- 30个疯狂的网页设计作品欣赏
- 诺基亚衰落的原因及其如何走去困境
- 前端后端nginx配置
热门文章
- 模式识别与机器学习第六章有监督学习方法
- UG标准件库的使用方法
- php mysql知识总结_Mysql数据库知识总结(看资料总结出来的)
- DLL注入技术之消息钩子注入(HOOK简单的实现)
- 传统网络通信模式、RDMA技术、InfiniBand协议、IB卡(IB交换机)之间的关系?
- 色彩空间(CIE色度图,SRGB,AdobeRGB...)
- java resourcebundle_Java ResourceBundle.getBundle如何加载属性文件?
- linux num_fds文件描述符数量限制 too many openfiles 错误
- 计算机网络笔记四 无线局域网
- ghostscript的坑