1:全局变量的说明之前再加上static就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别在于,非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的;而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其他源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数共用,因此可以避免在其他源文件中引起错误。

从以上分析可以看出,把全局变量改变为静态变量后是改变了它的存储方式,即改变了它的生存期;把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。

static函数与普通函数的作用域不同。static函数的作用域仅在本文件,只在当前源文件中使用的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件。

因此,static全局变量与普通的全局变量的区别是,static全局变量只初始化一次,防止在其他文件中被引用;static局部变量与普通局部变量的区别是,static局部变量只初始化一次,下一次依据上一次的结果值;static函数与普通函数的区别是,static函数在内存中只有一份,普通函数在每个被调用中维持一份复制品。

2:答案:

static全局变量与普通全局变量的区别是,static全局变量只初始化一次,防止其他文件单元中被引用。

static局部变量和普通局部变量的区别是,static局部变量只被初始化一次,下一次依据上一次结果值。

static函数与普通函数的区别是,static函数在内存中只有一份,普通函数在每个被调用中维持一份复制品。

转载于:https://www.cnblogs.com/lovemi93/p/7637135.html

预处理、const、static与sizeof-static全局变量与普通的全局变量有什么区别相关推荐

  1. C语言中static全局变量与普通的全局变量区别

    下面是中兴通讯2012校招笔试题的一道问答题: 1. static全局变量与普通的全局变量有什么区别 ? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量. 全局变量本身就是静 ...

  2. static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?...

    答案:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式. 这两者在存储方式上并无不同.这两者的区别虽在于非静态全 ...

  3. static全局变量与普通的全局变量

    一.程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分: 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈. 2.堆 ...

  4. static全局变量与普通全局变量区别?static局部变量与普通局部变量区别?static函数与普通函数区别?

    static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量(外部变量)的说明之前再冠以static 就构 ...

  5. C++全局变量与静态全局变量的异同(static与非static)

    文章目录 生命周期与作用域 静态变量的声明--通过案例理解 案例:局部声明静态变量 案例:全局声明静态变量 问题探讨: 1. static全局变量与普通的全局变量有什么区别 ? 2. static局部 ...

  6. static变量、static函数与普通变量、普通函数的区别

    转自:http://blog.163.com/sunshine_linting/blog/static/44893323201191294825184/ 全局变量(外部变量)的说明之前再冠以stati ...

  7. static变量和static函数

    1.static全局变量和普通的全局变量 static全局变量在定义该变量的当前源文件内有效, 在同一源程序的其它源文件中不能使用它.而普通的全局变量在各个源文件中都是有效的(当一个源程序由多个源文件 ...

  8. C++常见问题(三)——宏定义、const、static、sizeof的相关实例

    第一部分 宏定义 宏定义的语法格式:#define <标识符><字符串>,其中的标识符就是所谓的符号常量,也称为"宏名".预处理工作也叫宏展开.宏定义不占用 ...

  9. const、extern、static的使用不再神秘

    验证const: 验证extern: extern的作用是在程序中引入一个全局变量,比如 extern int age:当然这个age变量名在整个程序中只能有一个,否则会发生冲突.而且无论在哪个文件中 ...

  10. c语言static. volatile,嵌入式系统C语言重点语法const、volatile、static、堆栈等的意义及用法...

    原标题:嵌入式系统C语言重点语法const.volatile.static.堆栈等的意义及用法 在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场. 要点:堆, ...

最新文章

  1. 综述:解决目标检测中的样本不均衡问题
  2. mysql 清理host文件_如何删除mysql 数据库里面的host
  3. 列表对象转数组 微信小程序_微信小程序——无限递归的层次列表
  4. python 动态导入类_从动态导入模块中类的字符串名动态实例化?
  5. Linux tar.gz、tar、bz2、zip的区别,如何选择呢
  6. sql相同顺序法和一次封锁法_率土之滨追击战法攻略
  7. php事务 面向对象,关于PHP面向对象的事务脚本模式
  8. LeetCode17——Letter Combinations of a Phone Number(手机几个按键对应的字母(符号)组合)
  9. linux下设置java,Linux下设置java的环境变量
  10. DB2数据库对象设计
  11. 什么是QCIF? CIF?2CIF?4CIF?DCIF?
  12. 2022年最新软件测试工程师简历经验总结:软件测试工程师简历项目经验怎么写?(含真实简历模板)
  13. 二阶系统动态响应特性与阻尼比的关系
  14. 利用PaddleOCR实现摄像头实时OCR
  15. 请尊重一个姑娘的努力 (文/杨熹文)
  16. 在线接口Mock工具fastmock详解
  17. 用外部html圆形里装数字,如何使用CSS用圆圈包围数字?
  18. Paxos 与拜占庭将军问题
  19. 上海社科院:沪30岁以下青年购房压力
  20. JavaScript ------ DOM(事件基础)

热门文章

  1. 通解:HTTP超时,或者require TLS/SSL,亦或者conda install / update/ create Solving environment不停
  2. NYOJ--40--公约数和公倍数
  3. Mapreduce和yarn-内存设置
  4. QL Server 2008新特性:FILESTREAM
  5. 企业局域网——论文开题报告
  6. 功能增强的进度条控件(源码)
  7. java 随机抽取_java随机抽取指定范围不重复的数字
  8. 象棋python代码_python象棋_python 象棋_python象棋源码 - 云+社区 - 腾讯云
  9. 计算机一级天文小知识,不得了,天文知识增加了! | 第20期
  10. vue 第二天(常用指令及插值语法)