多个.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进行修饰即可,注意此时变量 的作用域依然是没有改变

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

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

相关文章

Ts总结5、TypeScript 元组

一、概念、写法 1、元组:是Ts中特有的,表示成员类型是可以自由设置的数组,即数组的各个成员的类型可以不同 2、写法:元组的成员类型是写在方括号里面([number])。TypeScript 的区分方法就是,成员类型写在方括号里面的就是元组,写在外面的就是数组。 // 数组: let a…

新 Mac 使用指南

文章目录 1、安装软件2、修改启动台3、修改 iCloud 设置、同步数据4、管理文件夹5、管理侧边栏6、设置快捷键 更新版本出现问题(有机会更新下问题和解决方式),重装 Sonoma,获得了一个新的 macOS。以新用户的视角来看,有…

sora生成高质量视频的原理

Sora是怎样生成视频的? 写在前面 Sora 是 OpenAI 在日前发布的超强视频生成 AI,旨在探索 AI 如何在理解真实世界运动和交互方面做得更好Sora目前无灰度体验 面临挑战 Sora面对的挑战就像是需要处理和理解来自世界各地、不同设备拍摄的数以百万计的图…

算法:有效的括号

算法&#xff1a;有效的括号 判断字符串是否为有效的括号 function isValidParentheses(s) {const stack [];const map {"(": ")","[": "]","{": "}"};for (let i 0; i < s.length; i) {if (s[i] "…

Google账号批量注册指南:如何防止多账号被封?

电子邮件地址对于在线帐户至关重要&#xff0c;但它们可能被滥用于发送垃圾邮件。因此Google使用先进的算法来检测可疑的注册和验证尝试&#xff0c;保护用户免受垃圾邮件和其他有害活动的侵害&#xff0c;所以如果需要批量注册多个Google帐户&#xff0c;需要做好账号防关联&a…

初阶数据结构之---顺序表和链表(C语言)

引言-线性表 线性表&#xff1a; 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构。线性表在逻辑上是线性结构&#xff0c;也就是说是连续的一条直线。但在物理上并不一定是连续的。线性表在物理上…

机器学习 day38(有放回抽样、随机森林算法、XGBoost)

有放回抽样 有放回抽样和无放回抽样的区别&#xff1a;有放回可以确保每轮抽取的结果不一定相同&#xff0c;无放回则每轮抽取的结果都相同 在猫狗的例子中&#xff0c;我们使用”有放回抽样“来抽取10个样本&#xff0c;并组合为一个与原始数据集不同的新数据集&#xff0c;虽…

MySQL运维实战(7)建立复制

引言 在构建数据库复制系统时&#xff0c;正确配置主库和备库是确保数据同步顺利进行的关键步骤。以下是建立复制的基本步骤&#xff0c;主要包括主库开启binlog的关键参数设置&#xff0c;创建主库复制账号以满足基本权限需求&#xff0c;备库参数配置和初始化的步骤。 1、主…

git push 使用 --mirror 参数复制仓库

迁移一个 Git 仓库并且保留原有的提交记录和分支 克隆原始仓库到本地 git clone <原始仓库URL> <新仓库目录>添加新的远程仓库&#xff1a;git remote add new-origin <新仓库URL>推送所有分支和标签到新的远程仓库&#xff1a;git push new-origin --mirro…

深度学习基础——SSD目标检测

SSD网络介绍 使用多个特征图作为特征预测层。 SSD (Single Shot MultiBox Detector)于2016年提出。当网络输入为300300大小时&#xff0c;在VOC2007测试集上达到74.3%的mAP;当输入是512512大小时&#xff0c;达到了76.9%的mAP SSD_Backbone部分介绍 不变的部分 特征提取网…

Mysql表字符集更换

Mysql表字符集更换 字符集 1.系统默认设置字符集为 utf8mb4,校验规则为 utf8mb4_bin&#xff0c;但可根据应用需要在申请时选 择其他字符集。 2.绝大多数数据库产品 UTF8 字符集存储汉字占用 3 个字节(部分特殊汉字占用 4 个字节),存 储英文字符占用 1 个字节。而 MYSQL 默认…

ubuntu 22.04 图文安装

ubuntu 22.04.3 live server图文安装 一、在Vmware里安装ubuntu 22.04.3 live server操作系统 选择第一个选项开始安装 选择English语言 选择中间选项不更新安装&#xff0c;这是因为后续通过更换源之后再更新会比较快 键盘设计继续选择英文&#xff0c;可以通过语言选择…

如何实现两个电脑之间通过以太网(网线)实现文件互传

如何实现两个电脑之间通过以太网&#xff08;网线&#xff09;实现文件互传 本帖目的&#xff1a;介绍如何通过以太网&#xff08;网线&#xff09;连接两台电脑&#xff0c;通过文件夹共享的方式&#xff0c;实现两台电脑之间的文件互传。 本帖以笔者实际工作上遇到的场景为例…

Python Paramiko模块-SSH远程连接服务器操作

前言 Paramiko 是 Python 语言的一个 SSH 客户端。可以远程连接Linux服务器&#xff0c;通过 python 对 Linux 进行操作&#xff0c;可以实现进行对远程服务器进行下载和上传文件操作。 简介 Paramiko的特点&#xff1a; 支持SSHv2协议和SFTP协议支持密码和密钥认证提供高级…

c编译器学习03:chibicc的win10 vs 编译、调试环境设置

虚拟机 用VMware Workstation 17 Player&#xff0c;安装centos7&#xff0c;安装gcc等开发工具 设置虚拟机的共享文件夹&#xff0c;将win10下下载的chibicc拷贝到/home/a下 直接make编译 用ip addr查询得到虚拟机的ip地址&#xff0c;后面vs远程开放时使用。 vs设置 vs毕…

2.20号qt

1.Qt中的信息调试类 &#xff08;输出类&#xff09; QDebug //1.类似与printf qDebug("%s","hello kittiy"); //2. 类似与cout 默认有换行 比较常用的方式 qDebug() << "你好" ; //1.类似与printf qDebug("%s",&q…

redis最佳实践

原则&#xff1a;redis希望存储的是热点数据&#xff0c;尽量可以在一天内访问到。 最佳实践 选择合适的数据结构 redis有String、Hash、Set、SortedSet、List等结构&#xff0c;主要依据业务需要进行选择 string:几乎所有数据都可以用string存储&#xff0c;但是最好适用于…

JS基础之函数

js基础之函数 目录 js基础之函数什么是函数&#xff1f;函数的语法无参函数有参函数&#xff1a;函数表达式函数的返回值returnarguments 什么是函数&#xff1f; 函数的作用就是将一段代码块封装打包到一起&#xff0c;方便后期重复使用 函数的语法 function 函数名(参数1,…

使用elasticsearch 8.4.3 的管道解析日志(kibana操作)

使用elasticsearch的管道解析日志&#xff08;kibana操作&#xff09; 一. 什么是 pipeline二. 案例 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 以下是一个简单的文档解析案例…