静态变量和全局变量的区别

静态变量和全局变量的区别全局变量与静态变量 static 声明的变量在 C 语言中有两方面的特征 1 变量被放在程序的全局存储区中 这样在下一次调用的时候还可以保持原来的赋值 这一点是它与堆栈变量和堆变量的区别 2 变量用 static 告知编译器 自己仅在变量的作用范围内可见 这一点是它与全局变量的区别 Tips A 若全局变量仅在单个 C 文件中访问 则可以将这个变量修改为静态全局变量 以降低模块间的耦

全局变量与静态变量

函数前加static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。

扩展分析:术语static有着不寻常的历史。起初,在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量。随后,static在C中有了第二种含义:用来表示不能被其它文件访问的全局变量和函数。最后,C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量和函数(与Java中此关键字的含义相同)。

全局变量、静态全局变量、静态局部变量和局部变量的区别

变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。

按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。

按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,并且程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。

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

全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。

原文地址:http://blog.sina.com.cn/s/blog_63278e550100lcb9.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216591.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午11:31
下一篇 2026年3月18日 上午11:31


相关推荐

  • 【JAVA 课程设计 之 万年历】「建议收藏」

    距离2017年还有30多个小时~转眼间2016只剩一个尾巴了,大学生活也过了快一半了,自己却依旧那么笨手笨脚,不会的知识永远那么多,该看的书永远没机会去看,2017愿一切如昨天抽的签:远方不一定有诗,但有更好的自己~明天你好,请多关照~2017希望我的家人们,小伙伴们,以及所有帮助过我的朋友们都能健健康康,万事如意~Java课设远没有自己想的难,万年历,不用做显示面~也算2016JAVA的最后一

    2022年4月10日
    53
  • aria2 txt导入_共一章 · mac下使用Aria2教程-迅雷和百度盘终极解决方案 · 看云[通俗易懂]

    #1.第一步:安装aria2##1.1下载并安装aria2下载最新的mac版本aria2(目前是1.19.3),以下提供三种下载方式(推荐第三种):1.[官网地址,可以下载其他版本](https://aria2.github.io)2.[本人百度云地址](https://pan.baidu.com/s/1ggfyQsj)密码:nyr13.[点击直接下载,aria2-1.19.3-…

    2022年4月14日
    38
  • Claude怎样在PC端使用_ClaudePC端使用教程【步骤】

    Claude怎样在PC端使用_ClaudePC端使用教程【步骤】

    2026年3月16日
    4
  • 排名前三的python 开源 IDE

    Python无处不在,似乎它支持从主要网站到桌面实用程序到企业软件的所有功能。Python已经被用来编写流行的软件项目,如dnf/yum,OpenStack,OpenShot,Blender,Calibre,甚至是原始的BitTorrent客户端。它也恰好是我最喜欢的编程语言之一。就个人而言,Python多年来一直是我从大学课程到小脚本的一切课程,帮助我自动执行重复的任务。它是少数…

    2022年4月8日
    55
  • FFmpeg从入门到精通(一)

    FFmpeg从入门到精通(一)FFmpeg介绍FFmpeg既是一种音视频编解码工具,也是一组音视频解码开发套件。作为编解码开发套件,它为开发者提供了丰富的音视频处理的调用接口。FFmpeg基本组成先看图,再看字。FFmpeg的封装模块AVFormatAVFormat中实现了目前多媒体领域中大多数媒体封装格式,包括封装和解封装,如:MP4,FLV等文件封装格式、HTTP,RTMP,HLS等网络协议封装格式。FFm…

    2022年6月26日
    21
  • 一文搞定echarts地图轮播高亮⚡⚡

    一文搞定echarts地图轮播高亮⚡⚡前言这次给大家分享一下在工作中经常用到的 echarts 地图轮播高亮 技术栈用的是 vue2 x 相信效果大家已经清楚了那我们就开干吧 toDoList 简单的准备一个地图保存实例备用设置定时器设置鼠标移入移出事件 justdoit 准备一个地图首先准备一个简简单单的地图 因为我在广州所以就用广东省的地图啦 怎么在 echarts 使用地图我就不说了看看文档然后把对应的地图 json 导入就可以了 相信大家也会 对了有人问到我在哪里找地图

    2026年3月17日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号