【C语言】作用域 和 生命周期

news2024/12/29 9:12:06
  •  🚩 WRITE IN FRONT 🚩       

  • 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎
  • 🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评百大博主、华为云享专家、阿里云专家博主、掘金优秀创作者、全网粉丝量7w+、个人社区人数累计4w+、全网访问量100w+ 🏅
  • 🆔 本文章内容由 謓泽 原创 如需相关转载请提前告知博主 ⚠
  • 📑 创作时间:2022 年 12 月 10 日 📅
  • 📝 个人主页:謓泽的博客 📃
  • 📣 专栏系列:【电子】系列_謓泽的博客📃
  • 🙌 Gitee:謓泽 (wsxsx) - Gitee.com ⭐️
  • 🎁 点赞👍+ 收藏⭐️+ 留言📝​
  • ✉️ 我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 📩

🥰目录

🎉 学习的内容 

🎉 作用域

🎉 代码   

🎉 生命周期

🎉 代码  

😈 extern

🎉 学习的内容 

        概述🥰这篇文章主要讲述的是何为 作用域 和 生命周期,以及带大家理解它的概念。当然,作用域也是会包含两个重要的概念的。一个是局部变量、还有一个是全局变量,可以说这篇文章内容还是对于前期学习的朋友是非常重要的。因为,在今后的学习当中它可以为你学习打下坚实的基础。

🎉 作用域

        说明🧑‍💻如果要按照官方点的说法的话,作用域(scope)是程序的设计概念,通常来说的话,一段程序当中的代码的"名字"并不总是有效或者说是可用的。但是,博主觉得没必要这样去理解。因为,这样可能对于新手来说并不是友好的。直接用最简单最通俗的话语给大家讲解下:变量的作用域在哪里使用,哪里就是变量的作用域。配合相关知识点去打代码的话你的理解也会越深的。

  1. 局部变量的作用域是在变量所在的局部范围内。
  2. 全局变量的作用域是在整个工程的。

🎉 代码   

        示例👉代码如下所示👇

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

// 1.作用域:变量的作用域在哪里使用,哪里就是变量的作用域。
extern void Scope_varible();

int main(void)
{
	Scope_varible();	// 变量的作用域
	return 0;
}

void Scope_varible()
{
	int a = 10;								// 'a->'是在这个范围的,此时都可以被打印。因为它的作用域是在函数的大括号里面。
#if 0
	{
		int a = 10;							// 'a->'是在这个范围内申请的,出了这个范围'a'就无效了,因为它的这个作用域只是在这个'a'的大括号里面并不在这个函数里面。
		printf("在变量作用域范围%d\n", a);
	}
	printf("不在变量作用域范围%d\n", a);		// 'a'->未声明标识符。
#endif
}

       说明🙌在上述代码是关于作用域的代码说明,也标明了注释,去多多理解它。

🎉 生命周期

        说明🧑‍💻生命周期指的是变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。

  1. 局部变量的生命周期是进入作用域周期开始,出作用域生命周期结束。
  2. 全局变量的生命周期是整个程序的生命周期。   

🎉 代码  

        示例👉代码如下所示👇

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int g_test = 1;	//整个程序的生命周期。   

// 2.生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
extern void Globaland_local();

int main(void)
{
	Scope_varible();	// 变量的作用域
	return 0;
}

void Globaland_local()
{
	int i = 2;	//进入函数{}作用域周期开始,出函数{}作用域生命周期结束。

	printf("全局变量g_test=%d\n", g_test);
	printf("局部变量i     =%d\n", i);
}

        运行结果📑

全局变量g_test=1
局部变量i     =2

        说明🙌在上述代码是关于生命周期的代码说明,配合代码上手,去多多理解它。 

😈 extern

        说明🙌由于博主之前写过一篇过于 extern 关键字,这里就不再过多描述了。  

【C语言】extern 关键字_int addtwonum()_謓泽的博客-CSDN博客⒈描述⇢extern 变量称之为外部存储变量。⒉定义⇢extern 在声明了此程序当中将要用到但尚未定义的外部变量。⒊注意⇢通常,外部存储类型都用于声明在另一个转换但又中定义变量。_int addtwonum()https://blog.csdn.net/weixin_52632755/article/details/127227644

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

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

相关文章

Sectigo企业的通配符证书续费

首先&#xff0c;我们要知道SSL证书是有期限的&#xff0c;通常SSL证书的有效期为一年&#xff0c;在SSL证书到期之前我们需要对其进行续费&#xff0c;从而延续SSL证书对网站的保护。Sectigo是中多的CA认证机构之一&#xff0c;申请速度快、性价比高&#xff0c;很多子域名站点…

如何用python新建一个文件,python怎么新建一个文件

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;如何通过python新建一个文件中的文件&#xff0c;如何通过python新建一个文件夹并命名&#xff0c;现在让我们一起来看看吧&#xff01; 文章目录 前言 1. 使用内置的open函数2. 使用with关键字3. 使用os模块总结零基础…

值得推荐的 5 个前端性能测试工具

前言 PageSpeed Insights 谷歌开发的一个免费的网页分析工具&#xff0c;在地址栏中输入被分析的网站url地址&#xff0c;点击分析&#xff0c; 可模拟移动设备访问页面结果分析 桌面设备访问页面结果分析 前端开发工程师&#xff0c;可以根据这个报告进行页面优化 Lighthous…

HTML语义化的理解

HTML语义化是指在编写HTML代码时&#xff0c;合理地选择适当的标签和属性来描述页面的结构和内容&#xff0c;使得代码更具有可读性、可维护性和可访问性。 可读性&#xff1a;通过使用语义化的标签&#xff0c;可以清晰地表达页面的结构和内容&#xff0c;使得代码更易于阅读和…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)在EventLoop的任务队列中添加新任务

任务队列是一个链表&#xff0c;每个节点包含channel类型、文件描述符和操作类型。在添加节点时&#xff0c;需要考虑线程同步&#xff0c;并确保节点被正确地添加到链表中。节点的操作可以写到另一个函数中&#xff0c;以便于程序的维护。在添加任务节点时&#xff0c;需要加互…

快速打通 Vue 3(三):Vue3 中的 watch 监听器与新特性

很激动进入了 Vue 3 的学习&#xff0c;作为一个已经上线了三年多的框架&#xff0c;很多项目都开始使用 Vue 3 来编写了 这一组文章主要聚焦于 Vue 3 的新技术和新特性 如果想要学习基础的 Vue 语法可以看我专栏中的其他博客 Vue&#xff08;一&#xff09;&#xff1a;Vue 入…

线程死锁检测组件逻辑与源码

死锁介绍 任务的执行体之间互相持有对方所需的资源而不释放&#xff0c;形成了相互制约而都无法继续执行任务的情况&#xff0c;被称为“死锁”。 死锁案例 线程A持有锁a不释放&#xff0c;需要去获取锁b才能继续执行任务&#xff0c; 线程B持有锁b不释放&#xff0c;需要去…

winform简易用户权限管理系统

一、功能简介 1. 数据库可使用sqlite、mssql、mysql等 2. 管理员账号不管控&#xff0c;其余账号进行权限管控&#xff08;左侧菜单&#xff0c;表单按钮&#xff09;&#xff0c;且只能看到自己创建的角色、用户 二、操作界面 1. 管理员账号登陆后&#xff0c;左侧菜单栏自动…

【Spark精讲】SparkSQL的RBO与CBO

Spark SQL核心:Catalyst Spark SQL的核心是Catalyst查询编译器&#xff0c;它将用户程序中的SQL/Dataset/DataFrame经过一系列操作&#xff0c;最终转化为Spark系统中执行的RDD。 Catalyst组成部分 Parser &#xff1a;用Antlr将SQL/Dataset/DataFrame转化成一棵未经解析的树…

怎么快速修复mfc140.dll文件?解决mfc140.dll缺失的方法

面对计算机报告的 ​mfc140.dll​ 文件遗失错误&#xff0c;这通常表明系统中缺少一个关键的动态链接库文件&#xff0c;该文件对于运行以 Microsoft Foundation Class (MFC) 库编写的程序十分重要&#xff0c;尤其是那些需要图形界面的应用程序和一些游戏。若没有这个文件&…

清风数学建模-数学规划模型

内容&#xff1a;数学规划模型&#xff08;cab aeqbeq lbub&#xff09; 一.题型类型 1.线性规划linprog 2.非线性规划 fmincon 3.整数规划 intlinprog 4.&#xff08;0-1规划&#xff09;&#xff08;特殊的线性整数规划&#xff09;intlinprog 5.多目标规划 linprog 标…

JumpServer3.0版本(用户管理、邮件、MFA认证配置)

创建用户组 控制台页面可以看见左侧的用户管理下,有用户列表和用户组 点击用户组、点击创建按钮、设置名称,用户不用选择还没建用户,提交即可 创建用户 点击用户列表创建按钮,设置名称、用户名、邮箱等必填项 这个时候用户组选项,可以选好我们创建的用户组了,先创用…

Spring高手之路-Spring Bean、Java Bean和对象的区别与联系

目录 什么是Spring Bean 什么是Java Bean 什么是对象 Spring Bean与Java Bean与对象的联系与区别 联系 区别 什么是Spring Bean 在Spring官方文档中对Bean的解释如下&#xff1a; In Spring, the objects that form the backbone of your application and that are manage…

MySQL数据库高级SQL语句及存储过程

目录 一、高级SQL语句 &#xff08;一&#xff09;case语句 1.语法定义 2.示例 &#xff08;二&#xff09;空值(NULL) 和 无值( ) 1.区别 2.示例 &#xff08;1&#xff09;字符长度 &#xff08;2&#xff09;判断方法 ① 空值(NULL) ② 无值( ) &#xff08;3…

代码随想录算法训练DAY18|二叉树5

算法训练DAY18|二叉树5 513.找树左下角的值 力扣题目链接 给定一个二叉树&#xff0c;在树的最后一行找到最左边的值。 示例 1: 示例 2: 思路 本题要找出树的最后一行的最左边的值。此时大家应该想起用层序遍历是非常简单的了&#xff0c;反而用递归的话会比较难一点。 我…

【通关喜报】腾讯云TDSQL TCP/TCE、云运维tcp 12月认证考试,全员过关,年终冲刺!

2023年12月23日云贝教育有6位学员参加了腾讯云TDSQL-TCP以及TCE认证考试。都取得非常好的成绩~下面我们来看一下各位同学的理论考试和上机考试成绩吧~

BWP频域位置的确定

这里根据协议整理下BWP频域相关参数以及如何确定BWP的频域位置。 BWP的配置包含几个参数 &#xff1a; 1 SCS, CyclePrefix 和locationAndBandwidth。 BWP频域起始位置N_start_BWPOcarrierRBstart&#xff0c;其中Ocarrier 由RRC层参数offsetToCarrier决定。 locationAndB…

Java学习——设计模式——结构型模式2

结构型模式 结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能&#xff0c;但结构型模式不仅仅简单地使用继承&#xff0c;而更多地通过组合与运行期的动态组合来实现更灵活的功能。 包括&#xff1a; 1…

Redis命令---String篇 (超全)

目录 1.Redis Setnx 命令 - 只有在 key 不存在时设置 key 的值。简介语法可用版本: > 1.0.0返回值: 设置成功&#xff0c;返回 1 。 设置失败&#xff0c;返回 0 。 示例 2.Redis Getrange 命令 - 返回 key 中字符串值的子字符简介语法可用版本: > 2.4.0返回值: 截取得到…

vue3 接入 Element Plus

vue3 接入 Element Plus vue3 发布已经很久了&#xff0c;官方也已经发布公告&#xff0c;自2023年12月31日起停止对 vue2 版本的维护更新&#xff0c;因此&#xff0c;vue3 正式登上了历史的舞台。组件库一直是前端开发的利器&#xff0c;减少了开发者开发复杂度&#xff0c;提…