C语言中static全局变量与普通的全局变量区别
下面是中兴通讯2012校招笔试题的一道问答题:
1. static全局变量与普通的全局变量有什么区别 ?
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。
全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。
这两者的区别在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
static全局变量只初使化一次,防止在其他文件单元中被引用;
2. static局部变量和普通局部变量有什么区别 ?
把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。
static局部变量只被初始化一次,下一次依据上一次结果值;
3. static函数与普通函数有什么区别?
static函数与普通函数作用域不同,仅在本文件。只在当前源文件中使用的函数应该说明为内部函数(static修饰的函数),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件.
static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
C语言中static全局变量与普通的全局变量区别相关推荐
- static全局变量与普通的全局变量
一.程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分: 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆 ...
- static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?...
答案:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式. 这两者在存储方式上并无不同.这两者的区别虽在于非静态全 ...
- C语言中static详细分析
google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大.所以,我这篇博文博采众家之长,把互 ...
- C语言中static关键字的作用详解,全网最透彻
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有 ...
- c语言中{的作用,C语言中Static和Const关键字的作用
C语言中Static和Const关键字的作用 程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于(堆)中.那么关于C语言中Static和Const关键字的作用,你了解多少 ...
- C语言中static变量详解
google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大.所以,我这篇博文博采众家之长,把互 ...
- C语言中static的作用及C语言中使用静态函数有何好处
转自:http://www.jb51.net/article/74830.htm 在C语言中,static的作用有三条:一是隐藏功能,二是保持持久性功能,三是默认初始化为0. 在C语言中,static ...
- C语言中static关键字的作用
在C语言中static的作用如下 第一.在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放. 第二.static修饰全局变量的时候, ...
- 【✊基础不牢,地动山摇のC语言中static关键字✊】
C语言中static关键字 用static声明限定外部变量与函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分.要降对象指定为静态存储,可以在正常的声明之前加上关键字static作为前缀. ...
最新文章
- Rust crates.io换国内镜像源
- android 常用渐变背景绘制
- PHP超全局变量$_SERVER
- Java基础 系统注解 @Override @Deprecated @SuppressWarnings 使用的方法及原因
- STM32编码器的学习笔记
- Ubuntu下如何修改文件或者文件夹的权限
- 3.Chrome开发者工具不完全指南(二、进阶篇)
- 微积分中BW定理指的是什么
- 如何向VISUAL SVN SERVER上传文件
- BZOJ 2794 [Poi2012]Cloakroom(离线+背包)
- 父级fixed_子元素使用position:fixed,导致他的宽度不能和父元素保持一致的解决方案...
- console的基础使用
- 考研还是工作?回过头来反思我当初为何没考研
- 【CP2K教程(三)】元动力学 (Metadynamics)与增强采样
- mysql计算年龄_MySQL根据出生日期计算年龄的三种方法比较
- Bert算法模型ppt分享
- Hexo编译静态资源生成博客图文教程
- SRPG游戏开发(四十)第九章 战斗系统 - 二 计算战斗数据(Calculate Combat Data)
- 搭建旅游大数据平台,打造全域旅游新体验
- 3.1_2 JavaSE入门 P1 【Java基础】Java语言概述、JDK编译
热门文章
- LT1004CZ-2.5 参考电压源
- 第十五届全国大学生智能汽车竞赛各分赛区成绩汇总
- 跨域产生的原因和解决方法_ABS注塑制品产生色差的原因及解决方法
- java mysql failover_MySQL MMM 双主在Failover时挂起
- 凝思系统分辨率怎么看_机械液压系统的泄漏怎么办,液压系统基本知识,看完你就懂了...
- 阶乘在c语言代码大全,求10000的阶乘(c语言代码实现)
- linux时间 a x z,关于linux的命令一个莫名的想法,a到z有哪些命令
- 遍历同辈节电的方法_家用节电小常识:一些行之有效的节能方法
- 固态器件理论(11)超导设备
- 【 MATLAB 】any 函数介绍(确定是否有任意数组元素非零)