c语言静态变量存在堆还是栈,c 类 static 函数 什么样是静态变量?嵌入式C语言的堆栈管理如何实现...

1-429-png_6_0_0_343_854_237_232_892.979_1262.879-437-0-191-437.jpg

C语言中静态变量是什么意思,有什么作用,static在数据类型前面表示什么

最近刚看了C存储类的章节。所以来说说。

C语言为变量提供了⑤种不同的存储模型,或者说是存储类。

①个变量可以用存储时期描述,也可以用作用域描述,也可以用它的链接描述。c 类 static 函数

存储时期就是变量在内存中的保留时间。比如说全局变量①直都在,而①个代码块里的局部变量当这个代码块执行完以后,它就不在了。

存储时期分为,自动,和静态。

变量的作用域和链接①起可以说明,程序的那些部分可以通过变量名来使用该变量。

变量的作用域分两类,①个是代码块作用域,①个是文件作用域。

(还有个叫函数作用域的,和goto语句有关,说的是goto语句的标签堆该函数的任何地方的代码都是可见的,无论出现在哪①个代码块)

链接分③种,外部链接,内部链接,和空链接。

函数内的局部变量是空链接。所有函数以外定义的变量有内部链接和外部链接之分。

内部是说,该变量可以在这个文件内使用。

外部是说,可以在多个文件内使用,就是你定义声明①次变量,在另外①个相关文件内不用再定义,可以直接引用。

不同的存储类就是变量的作用域、链接以及存储时期的不同组合。

这样的组合的结果是有以下⑤种存储类。

① · 自动变量

② · 寄存器变量

1-267-png_6_0_0_245_533_229_179_892.979_1262.879-361-0-0-361.jpg

③ · 空链接的静态变量

④ · 具有外部链接的静态变量

⑤ · 具有内部链接的静态变量

所以说,要明白静态变量是什么先要明白,静态这个概念是针对存储时期来说,举个例子,①个定义的函数内的局部变量,如果你不声明它的存储类,那么它默认是自动变量,自动变量的特点就是你调用这个函数的时候,这个变量存在,调用结束以后,这个变量就不存在了。而你如果把这个函数里的①个变量存储时期定义为静态的,那么当这个函数结束以后,这个变量还在。只是说作用域限于这个函数。这种变量叫做空链接的静态变量,又叫代码块作用域的静态变量。

还有如果在所有函数值外定义的变量也称之为静态变量。

下面来说关键字static和静态变量的关系。c 类 static 函数

①个在有函数以外声明的变量,它是具有文件作用域的变量,即从它定义的位置到文件结束时都是可以用这个变量的名来引用它的。(在某个函数内,如果没有相同名称的变量,引用的就是这个变量),而对于文件作用域变量,它必然是①个静态变量,所以对于文件作用域的变量,关键字static的作用不是表明存储时期,而是链接类型,如下

int n;static int m;int main()n就是具有外部链接的文件作用域变量

m就是具有内部链接的文件作用域变量

而对代码块作用域变量使用static关键字,才是把它从自动变量变为静态变量。

========================================

综上可知,静态变量是针对存储时期这①维度的概念。

对于代码块作用域变量使用static关键字可以把自动变量变为静态变量。

对于文件作用域变量使用static关键字是说明链接类型。

========================================

即C语言的基于动态内存分配函数的存储时期

和线程存储时期。

c9d700e4aa26ea41ea444800761bf4f4.png

还有是对于外部链接来说,在①个文件中定义声明①次后,在另外①个文件中引用声明后,就可以使用,这个有问题么?

没有操作系统,就是裸机。整台机器就你①个程序,享有全部的内存空间。CPU运行之初,会设置好栈空间的起始地址。堆空间的起始地址是编译器根据代码段和数据段的地址和大小推算出来的。栈从高往低长,堆从低往高长。

栈的管理比较简单,调用函数的时候会有压栈和出栈的动作,编译器已经生成好了这些代码。

堆的管理,调用malloc,因为①般单片机的编译器都有特定的修改,支持动态分配内存,例如分配和释放内存,空闲内存的管理。但是管理算法比较简单,会出现内存碎片。

好搜摇一摇咋将静态图变为动态图?是什么样

● 将允许用户查看源代码?微软瞄准嵌入式设备

● 微软是幕后黑手?SCO要消灭嵌入式Linux系统

● 8标准版预览已发布?嵌入式Windows

● 召唤出什么样有什么样规律?圣斗士星矢重生十连抽

● 全明星探案是什么样意思什么样梗?UC浏览器3.19啥

● 什么样情况下该用什么样?火线指令战柏林步推荐

● 七款CPU选购推荐?什么样配什么样弹

● 什么样英雄站什么样位?崩坏世界定位介绍

● 我跟你什么样仇什么样怨?《变身吧主公》天下第一比武大会

● 想要什么样来什么样?海岛奇兵刷极品神像技巧

● 6月会出什么样什么样新战机?全民飞机大战6月预告

● 如何获得FP?《万千回忆》FP是什么样有什么样用

● 会开放什么样新区域解锁什么样武器?封印者8.4二次转职有奖励

● 实验体碎片有什么样用能兑换什么样?DNF咋获得

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-64244-1.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何专业化监控一个Kubernetes集群?

简介: 本文会介绍 Kubernetes 可观测性系统的构建,以及基于阿里云云产品实现 Kubernetes 可观测系统构建的最佳实践。 作者:佳旭 阿里云容器服务技术专家 引言 Kubernetes 在生产环境应用的普及度越来越广、复杂度越来越高,随之而…

如何构建一个拖垮整个公司的备份系统

简介: 在如今“数据即资产”的时代,有备才能无患。备份就像备胎,虽然大多人都知道备胎很重要,却很少有人检查。不发生点什么,你永远不知道TA对你有多重要。 原文链接 本文为阿里云原创内容,未经允许不得转…

6.7K Star 的知名开源项目源码,该怎么看?

作者 | 一只图雀来源 | 程序员巴士心理认知要到位首先要认识到,看源码是一个开始比较枯燥、同时时间跨度相对比较长的一个过程。所以看源码的第一步是找到自己想要了解领域、或者自己所在业务领域高度相关的项目,并且在这个领域比较出名,且维…

网站建设中 模板_网站建设之模板网站的缺点

随着网站建设市场的日益成熟,许多的自助建站平台纷纷涌入建站市场,甚至许多主机供应商也与一些自助建站平台达成了战略合作,买服务器赠送模板网站。那么我们进行网站建设时是选择专业建站公司的定制网站还是模板站呢?看完模板网站…

阿里云李飞飞:什么是云原生数据库

简介: 云原生是一种新型技术体系,是云计算未来的发展方向。今天,阿里云李飞飞将和我们分享何为云原生、云原生如何与分布式有机结合,以及云原生技术如何帮助客户迈入数字原生时代。 作者 | 飞刀 来源 | 阿里技术公众号 云原生是一…

stm32 adc 连续和扫描_技术分享 | STM32多个ADC模块同时采样转换的应用示例

在STM32家族里,多数系列芯片内含2到3个ADC模块,有的甚至更多,比方G4系列可以有5个ADC模块。其中,通道数因不同的系列或型号多少不等,几个到几十个的都有。有时,我们可能需要多个ADC模块同时工作&#xff0c…

云原生/低代码/数据科学/计算等方向内容整理志愿者招募了!

持续招募内容整理志愿者!云原生、数据科学、AI、低代码、计算等方向,有意愿的小伙伴,欢迎识别二维码提前报名哦。我们将持续为爱学习、有时间的小伙伴,提供多重福利!要求:1. 你需要具备一定学术背景&#x…

python计算运动会某个参赛选手的得分。数据保存在文件中_成绩计算电脑程序的使用说明...

成绩计算电脑程序的使用说明为了计算成绩,特制作这个电脑程序,说明如下:一、开发软件:Python二、使用说明:在电脑D盘根目录下建立两个excel文件,一个是1.xlsx,另一个是2.xlsx其中,1.…

android 创建文件夹_Android 动画小记

精简介绍Android中的动画,主要介绍用法。动画种类包括了:补间动画、逐帧动画、属性动画,前两者统称为视图动画。补间动画包括了平移、旋转、缩放和透明度四种,每种动画支持xml和代码设置。另外还有一种组合动画,就是将…

2021金蝶全球创见者大会成功举办, 500强企业共话EBC数字战斗力

11月27日,由金蝶主办的“2021全球创见者大会”成功举办。大会以“用数字战斗力,向管理要效益”为主题,求索不确定时代,EBC如何帮助500强及中小企业拥抱数字战斗力,构建企业韧性。 据了解,金蝶全球创见者大…

使用管控策略,设定多账号组织全局访问边界

简介: 企业上云多账号架构中,如何做到从上到下管理的同时,处理好员工的权限边界问题? 由多账号上云模式说起 多账号上云模式的产生 我们的企业客户上云,一般都是从尝试部署少量业务开始,然后逐步将更多业…

使用MaxCompute LOAD命令批量导入OSS数据最佳实践—STS方式LOAD开启KMS加密OSS数据

简介: MaxCompute使用load overwrite或load into命令将外部存储的数据(如:oss)导入到MaxCompute前的授权操作。 MaxCompute使用load overwrite或load into命令将外部存储的数据(如:oss)导入到M…

pca降维的基本思想_R语言进行PCA分析

点击上方「蓝字」关注我写在前面前面我们知道了降维分析学习了PCoA分析今天学习PCA分析...PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征…

c语言线性分类回归库 台湾,最全的线性回归算法库总结—— scikit-learn篇

原标题:最全的线性回归算法库总结—— scikit-learn篇本文建议收藏后食用更加美味scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性回归分析,本文就对这些类库的使用做一个总结,重点讲述这些线性回归算法库的…

吉麦新能源与联想签订战略合作协议,共同拥抱智能网联汽车升维时代

11月25日,吉麦新能源汽车与联想战略合作签约仪式成功举行,双方正式建立战略合作伙伴关系。未来,双方将在车联网、云解决方案及服务、IT基础架构产品服务、智慧工厂服务领域开展深入合作,合力推动新能源造车数智化转型,…

供应链商品域DDD实践

简介: DDD是一套方法论,实践能否成功,不仅仅是个技术问题,更是执行贯彻实施的问题。本文将就DDD的基本概念和DDD的实施进行分享。 作者 | 侧帽 来源 | 阿里技术公众号 前言 供应链商品域DDD实践时间不长,在实践过程也…

20岁,Universal GIS拥抱新生的GIS信创

近20年来,在快速发展的IT新技术和国家应用需求的双轮驱动下,我国GIS技术和产业得到了飞速发展,GIS软件应用范围从几个行业深入到了数字中国建设中的数字经济、数字政务、数字社会、数字生态建设的几乎所有行业和领域。GIS软件已成为国家治理体…

如何用Netty写一个高性能的分布式服务框架?

byte[] -->堆外内存 / 堆外内存--> byte[] -->java对象。 优化:省去 byte[] 环节,直接 读/写 堆外内存,这需要扩展对应的序列化框架。 String 编码/解码优化。 Varint 优化:多次 writeByte 合并为 writeShort/writeInt/w…

C语言rec文件如何打开,REC 文件扩展名: 它是什么以及如何打开它?

REC 疑难解答典型的 REC 开放挑战Squared 5 MPEG Streamclip 不在你尝试加载 REC 文件并收到错误,例如 “%%os%% 无法打开 REC 文件扩展名”。 通常,这是因为你没有安装适用于 %%os%% 的 Squared 5 MPEG Streamclip。 操作系统不知道如何处理你的 REC 文…

Quick BI:降低使用门槛,大东鞋业8000家门店的数据导航

简介: 通过引入MaxCompute和Quick BI,大东解决了以往数据查询即刻导致数据库闪崩的状况,还搭建起完善的报表体系,稳定应对高频、高并发的数据分析。 大东鞋业一季大约有500款的新品。大区下辖的各个分公司要对这500款新品进行订货…