多个.C 文件关于全局变量如何使用

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary_walk

      ⸝⋆   ━━━┓
     - 个性标签 - :来于“云”的“羽球人”。 Talk is cheap. Show me the code
┗━━━━━━━  ➴ ⷯ

本人座右铭 :   欲达高峰,必忍其痛;欲戴王冠,必承其重。

👑💎💎👑💎💎👑 
💎💎💎自💎💎💎
💎💎💎信💎💎💎
👑💎💎 💎💎👑    希望在看完我的此篇博客后可以对你有帮助哟

👑👑💎💎💎👑👑   此外,希望各位大佬们在看完后,可以互相支持,蟹蟹!
👑👑👑💎👑👑👑


 全局变量与局部变量区别

1)概念
全局变量:在⼤括号外部定义的变量就是全局变量
局部变量:在 ⼤括号里面 定义的变量就是局部变量
2.1)  生命周期

全局变量:在整个程序里面都是可以使用,只不过有条件限制的

局部变量:使用受限,只能在对应 的大括号里面使用,出了作用域,生命周期结束

2.2) 存储
2.2.1)内存分配:

2.2.2)内存的使用

全局变量是存储在静态区的

局部变量是存储 在栈区的

malloc,realloc ,cealloc函数开辟的空间都是存放在堆区的(堆区的使用取决于程序员)

堆是向上生长的。

 栈:由编译器自动对内存进行分配释放,存放函数的参数值,局部变量的值等。

栈是由地地址向高地址进行增长的(向下生长)

  栈中存放的内容以及存放的先后顺序:

在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可  
  执行语句)的地址

第二个进栈是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈 的

第三个进栈是函数中的局部变量。注意静态变量是不入栈的

静态变量:被static 修饰的变量都是静态变量,被static修饰的变量不分局部变量还是全局变量,都被称为静态变量

static修饰局部变量的作用:

改变了变量的生命周期,但是变量的作用域依然不变的

和全局变量的生命周期是⼀样的, 全局变量的生命周期和程序的⽣命周期⼀样 ,只有程序结束,变量才销毁,内存才回收。
见以下栗子:

static修饰全局变量的作用:

一个全局变量在整个程序里面都是可以使用的,只不过需要用 extern 进行声明。

static 修饰的全局变量不能整个程序里面使用,只能在指定的源文件里面进行使用,其他源文件即使进行了声明也是不能使用的

全局区(静态区):

全静态局变量和变量的存储都是存储在全局区(静态区)。按是否对变量进行初始化来进行划分:初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,程序结束后由系统释放。

常量区:常量字符串就是放在这里的(const修饰的字符串),注意只能进行读,不能进行写
代码区

存放被程序的编译后的可执行二进制代码,注意也是只能进行读的功能,不能修改。

3)  局部变量如何具有全局变量的性质

对局部变量用static进行修饰即可,注意此时变量 的作用域依然是没有改变

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp运动课程健身打卡系统微信小程序

考虑到实际生活中在我来运动管理方面的需要以及对该系统认真的分析,将系统分为小程序端模块和后台管理员模块,权限按管理员和用户这两类涉及用户划分。 (a) 管理员;管理员使用本系统涉到的功能主要有:首页、个人中心、用户管理、课程类别管理…

【知识分享】自动化测试首选接口自动化?

在分层测试的“金字塔”模型中,接口测试属于第二层服务集成测试范畴。 相比UI自动化测试而言,接口自动化测试收益更大,且容易实现,维护成本低,有着更高的投入产出比。因此,项目开展自动化测试的首选一般为接…

计网day5

六 传输层 6.1 传输层概述 6.2 UDP协议 6.3 TCP协议 TCP连接管理: TCP可靠传输: TCP拥塞控制:

kafka命令行操作

kafka命令行操作: 配置环境变量: export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk export JRE_HOME${JAVA_HOME}/jre export CLASSPATH.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH export JAVA_PATH${JAVA_HOME}/bin:${JRE_HOME}/bin export PATH…

总结Rabbitmq的六种模式

RabbitMQ六种工作模式 RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue 高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开发中应用非常广泛。 RabbitMQ有六…

Spring最新核心高频面试题(持续更新)

1 什么是Spring框架 Spring框架是一个开源的Java应用程序开发框架,它提供了很多工具和功能,可以帮助开发者更快地构建企业级应用程序。通过使用Spring框架,开发者可以更加轻松地开发Java应用程序,并且可以更加灵活地组织和管理应…

强化学习(SQL)

SQL——soft Q-learning 这是一种在最大化期望累计奖励的基础上,最大化熵项的算法,即该算法的优化目标是累计奖励和熵(entropy)的和。 SQL的好处: ①探索性强:可以在多模态任务中找到最佳的方案&#xf…

【问题解决】删除node节点后如何把node节点重新加入

环境明细 docker版本: 25.0.3kubeadm 版本:v1.25.0 1 在master节点删除node节点 [rootk8s-master ~]# kubectl delete nodes k8s-node-02 node "k8s-node-02" deleted [rootk8s-master ~]# kubectl get nodes -o wide NAME STAT…

嵌入式学习-qt-Day2

嵌入式学习-qt-Day2 一、思维导图 二、作业 1.使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 2.将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账…

大数据构建知识图谱:从技术到实战的完整指南

文章目录 大数据构建知识图谱:从技术到实战的完整指南一、概述二、知识图谱的基础理论定义与分类核心组成历史与发展 三、知识获取与预处理数据源选择数据清洗实体识别 四、知识表示方法知识表示模型RDFOWL属性图模型 本体构建关系提取与表示 五、知识图谱构建技术图…

简化与效率:亚信安慧AntDB在数据处理中的创新

AntDB统一超融架构将外部接口的统一化极大简化了数据采集与处理的流程。传统的数据采集必须分成不同的阶段,先将数据收集起来,再进行处理,过程繁琐且易出错。而AntDB统一超融架构则将这两个环节合二为一,使得数据的采集与处理成为…

Project_Euler-15 题解

Project_Euler-15 题解 题目 思路 一眼背包问题,再看一眼广度优先搜索,再看一眼排列组合,这里讲一讲排列组合的解法吧: 以 2 ∗ 2 2*2 2∗2的组合为例可以发现: 无论哪一种方法,从左上角到右下角总共需要…

Docker部署Java项目

打包 添加 <!-- 打包插件--> <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins> </build> 通过执行以下命令进…

Python学习笔记——自定义函数(基础知识)

自定义函数非常简洁有效地实现了代码的复用&#xff0c;让程序编写、阅读、测试和修改变得更加容易。 下面记录Python自定义函数的使用。 1、定义函数&#xff1a; def describe_pet(pet_name,animal_typedog):显示宠物的信息print(f"\nI have a {animal_type}.")…

年度巨作!《2024全球量子计算产业发展展望》发布

2月20日&#xff0c;《2024量子计算产业发展展望》的中文版报告通过光子盒官方平台发布&#xff0c;英文版报告通过ICV官方平台发布。 英文版报告获取地址&#xff1a; https://www.icvtank.com/newsinfo/897610.html 在过去的一年里&#xff0c;光子盒与您一同见证了全球量子…

useGeneratedKeys=“true” keyProperty=“id”

useGeneratedKeys“true” keyProperty“id” 这个注解在xml文件的insert方法中&#xff0c;可以用于返回主键值&#xff1b; 并且useGeneratedKeys参数只针对 insert 语句生效&#xff0c;默认为 false&#xff1b;

34.仿简道云公式函数实战-数学函数-PRODUCT

1. PRODUCT函数 函数使所有以参数形式给出的数字相乘并返回乘积。 2. 函数用法 PRODUCT(number1, [number2], …) 3. 函数示例 PRODUCT(数量, 单价) 4. 代码实战 首先我们在function包下创建math包&#xff0c;在math包下创建ProductFunction类&#xff0c;代码如下&…

24-k8s的附件组件-Metrics-server组件与hpa资源pod水平伸缩

一、概述 Metrics-Server组件目的&#xff1a;获取集群中pod、节点等负载信息&#xff1b; hpa资源目的&#xff1a;通过metrics-server获取的pod负载信息&#xff0c;自动伸缩创建pod&#xff1b; 参考链接&#xff1a; 资源指标管道 | Kubernetes https://github.com/kuberne…

fastApi笔记03-请求体

请求体是客户端发送给API的数据&#xff0c;fastApi使用 Pydantic 模型来声明请求体 不能使用 GET操作&#xff08;HTTP 方法&#xff09;发送请求体。 要发送数据&#xff0c;必须使用下列方法之一&#xff1a;POST&#xff08;较常见&#xff09;、PUT、DELETE 或 PATCH 创…

Java 后端面试指南

面试指南 TMD&#xff0c;一个后端为什么要了解那么多的知识&#xff0c;真是服了。啥啥都得了解 MySQL MySQL索引可能在以下几种情况下失效&#xff1a; 不遵循最左匹配原则&#xff1a;在联合索引中&#xff0c;如果没有使用索引的最左前缀&#xff0c;即查询条件中没有包含…