当前位置: 首页 > news >正文

C++共享和保护——(2)生存期

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝
生命如同寓言,其价值不在于长短,而在与内容!

一起加油!

目录

一、前言:

二、动态生存期:

三、静态生存期:

💦例:利用静态成员在函数内部统计函数被调用了几次。 

💦例:变量的生存期与可见性。 

四、总结: 

 五、共勉:


 

一、前言:

        每个对象(变量)都有生存期。生存期就是程序执行时,对象(变量)存在(存活)的那段时间。
        对象的生存期可以分为静态生存期和动态生存期两种。在函数外部定义的全局对象在整个程序执行的过程中都有效,这些对象从程序运行开始“诞生”直到程序结束“死亡”,这类对象都具有静态生存期;局部对象的生存期取决于定义的方式,有动态生存期和静态生存期两种。

二、动态生存期:

         声明在块中的普通的局部对象,生存期从声明点开始,结束于声明所在的块执行完毕之时,几有动态生存期的对象,其存储空间在执行到块的时候被分配,块执行完毕后,对象生存期结束,空间被收回。

三、静态生存期:

        如果对象的生存期与程序的运行期相同,则称它具有静态生存期。在命名空间作用域中声明的对象都是具有静态生存期的。局部对象如果要具有静态生存期,则需要用到关键字 static。例如.下列语句定义的变量 i 便是具有静态生存期的变量,也被称为静态变量:

static int i;

         静态局部对象的特点是:

  • (1)每个静态局部对在第一次被执行之前进行初始化;
  • (2)静态局部对象在整个程序运行过程中一直存在,直到程序运行结束才消亡。

也就是说,如果在一个函数中定义了静态局部对象,当函数返回后,该变量空间不会消失,还保留着上一次存储的值,下一次再调用函数时在上一次所存储的值的基础上进行处理或运算,该变量在每次函数调用间实现数据共享。

💦例:利用静态成员在函数内部统计函数被调用了几次。 

#include<iostream>
using namespace std;int count_calls(){static int count=0;count++;return count;
}int main(){int i;for(i=0;i<10;i++){cout<<count_calls()<<",";}return 0;
}

  • (1)标识符的作用域是指在程序中的某个位置哪些标识符是可见的。
  • (2)对象的生存期是指在程序执行过程中,对象一直存在。

💦例:变量的生存期与可见性。 

#include<iostream>
using namespace std;
int i=0;//i为全局变量,具有静态生存期 
void other(){//a,b为静态局部变量,具有静态生存期,在函数内部可见第一次进入other()函数时被初始化 static int a=2;static int b;int c=10;//c为局部变量,具有动态生存期,每次进入函数时都初始化 a+=2;i+=32;c+=5;cout<<"----other----"<<endl;cout<<"i:"<<i<<" a:"<<a<<" b:"<<b<<" c:"<<c<<endl;b=a;
}int main(){static int a;//a为静态局部变量,具有全局生命期,局部可见 //b,c为局部变量,具有动态生存期,局部可见 int b=-10;int c=0;cout<<"----main----"<<endl;cout<<"i:"<<i<<" a:"<<a<<" b:"<<b<<" c:"<<c<<endl;c+=8;other();cout<<"----main----"<<endl;cout<<"i:"<<i<<" a:"<<a<<" b:"<<b<<" c:"<<c<<endl;	i+=10;other();return 0;
}

四、总结: 

  • 每个对象(变量)都有生存期。
  • 对象的生存期可以分为静态生存期和动态生存期两种。
  • 如果对象的生存期与程序的运行期相同,则称它具有静态生存期。
  • 每个静态局部对在第一次被执行之前进行初始化。
  • 静态局部对象在整个程序运行过程中一直存在,直到程序运行结束才消亡。
  • 标识符的作用域是指在程序中的某个位置哪些标识符是可见的。
  • 对象的生存期是指在程序执行过程中,对象一直存在。

 五、共勉:

        以上就是我对C++共享和保护——(2)生存期的理解,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C++共享和保护的理解,请持续关注我哦!!! 

相关文章:

C++共享和保护——(2)生存期

归纳编程学习的感悟&#xff0c; 记录奋斗路上的点滴&#xff0c; 希望能帮到一样刻苦的你&#xff01; 如有不足欢迎指正&#xff01; 共同学习交流&#xff01; &#x1f30e;欢迎各位→点赞 &#x1f44d; 收藏⭐ 留言​&#x1f4dd; 生命如同寓言&#xff0c;其价值不在于…...

你好,C++(3)2.1 一个C++程序的自白

第2部分 与C第一次亲密接触 在浏览了C“三分天下”的世界版图之后&#xff0c;便对C有了基本的了解&#xff0c;算是一只脚跨入了C世界的大门。那么&#xff0c;怎样将我们的另外一只脚也跨入C世界的大门呢&#xff1f;是该即刻开始编写C程序&#xff1f;还是…… 正在我们犹…...

【INTEL(ALTERA)】Agilex7 FPGA Development Kit DK-DEV-AGI027R1BES编程/烧录/烧写/下载步骤

DK-DEV-AGI027R1BES 的编程步骤&#xff1a; 将外部 USB Blaster II 连接到 J10- 外部 JTAG 接头。将交换机 SW5.3 设置为 ON&#xff08;首次&#xff09;。打开 英特尔 Quartus Prime Pro Edition 软件编程工具。单击 硬件设置 &#xff0c;然后选择 USB Blaster II。将硬件…...

大文件分块上传的代码,C++转delphi,由delphi实现。

在 Delphi 中&#xff0c;我们通常使用 IdHTTP 或 TNetHTTPClient 等组件来处理 HTTP 请求 原文章链接&#xff1a; 掌握分片上传&#xff1a;优化大文件传输的关键策略 【C】【WinHttp】【curl】-CSDN博客 改造思路&#xff1a; 文件分块处理&#xff1a;使用 TFileStream 来…...

MongoDB表的主键可以重复?!MongoDB的坑

MongoDB表的主键可以重复&#xff1f;&#xff01; 眼见为实&#xff1f; 碰到一个奇怪的现象&#xff0c; MongoDB的一个表居然有两个一样的_id值&#xff01; 再次提交时&#xff0c;是会报主键冲突的。那上图&#xff0c;为什么会有两个一样的_id呢&#xff1f; 将它们的…...

C++初阶-list类的模拟实现

list类的模拟实现 一、基本框架1.1 节点类1.2 迭代器类1.3 list类 二、构造函数和析构函数2.1 构造函数2.2 析构函数 三、operator的重载和拷贝构造3.1 operator的重载3.2 拷贝构造 四、迭代器的实现4.1 迭代器类中的各种操作4.1 list类中的迭代器 五、list的增容和删除5.1 尾插…...

RecyclerView中的设计模式解读

一.观察者模式&#xff1a;&#xff08;待完善&#xff0c;这个写的不咋地&#xff0c;没理解透彻&#xff09; 1.观察者模式的概念&#xff1a; &#xff08;1&#xff09;消息传递方向&#xff1a;被观察者->观察者 &#xff08;2&#xff09;代码实现&#xff1a; 首…...

ACwing算法备战蓝桥杯——Day30——树状数组

定义&#xff1a; 树状数组是一种数据结构&#xff0c;能将对一个区间内数据进行修改和求前缀和的这两种操作的最坏时间复杂度降低到O(logn); 实现所需变量 变量名变量数据类型作用数组a[]int存储一段区间数组tr[]int表示树状数组 主要操作 函数名函数参数组要作用lowbit()int…...

elementui + vue2实现表格行的上下移动

场景&#xff1a; 如上&#xff0c;要实现表格行的上下移动 实现&#xff1a; <el-dialogappend-to-bodytitle"条件编辑":visible.sync"dialogVisible"width"60%"><el-table :data"data1" border style"width: 100%&q…...

2、快速搞定Kafka术语

快速搞定Kafka术语 Kafka 服务端3层消息架构 Kafka 客户端Broker 如何持久化数据小结 Kafka 服务端 3层消息架构 第 1 层是主题层&#xff0c;每个主题可以配置 M 个分区&#xff0c;而每个分区又可以配置 N 个副本。第 2 层是分区层&#xff0c;每个分区的 N 个副本中只能有…...

CSS新手入门笔记整理:CSS3选择器

属性选择器 属性选择器&#xff0c;指的是通过“元素的属性”来选择元素的一种方式。 语法 元素[attr^"xxx"]{} 元素[attr$"xxx"]{} 元素[attr*"xxx"]{} 选择器 说明 E[attr^"xxx"] 选择元素E&#xff0c;其中E元素的attr属性是…...

D34|不同路径

62.不同路径 初始思路&#xff1a; 1&#xff09;确定dp数组以及下标的含义&#xff1a; dp[i][i]存放到第i1行和第i1列的方法数 2&#xff09;确定递推公式&#xff1a; dp[i][i] dp[i -1][i] dp[i][i-1] 3&#xff09;dp数组如何初始化 第0行是1&#xff1b; 第0列是1&a…...

【运维】Kafka高可用: KRaft(不依赖zookeeper)集群搭建

文章目录 一. kafka kraft 集群介绍1. KRaft架构2. Controller 服务器3. Process Roles4. Quorum Voters5. kraft的工作原理 ing 二. 集群安装1. 安装1.1. 配置1.2. 格式化 2. 启动测试2.1. 启功节点服务2.2. 测试 本文主要介绍了 kafka raft集群架构&#xff1a; 与旧架构的不…...

Python 自动化之批量处理文件(一)

批量新建目录、文档Pro版本 文章目录 批量新建目录、文档Pro版本前言一、做成什么样子二、基本思路1.引入库2.基本架构 三、用户输入模块四、数据处理模块1.excel表格数据获取2.批量数据的生成 总结 前言 我来写一个不一样的批量新建吧。在工作中&#xff0c;有些同学应该会遇…...

力扣72. 编辑距离

动态规划 思路&#xff1a; 假设 dp[i][j] 是 word1 前 i 个字母到 word2 前 j 个字母的编辑距离&#xff1b;那么状态 dp[i][j] 状态的上一个状态有&#xff1a; dp[i - 1][j]&#xff0c;word1 前 i - 1 个字母到 word2 前 j 个字母的编辑距离&#xff0c;此状态再插入一个字…...

Unity中 URP Shader 的纹理与采样器的分离定义

文章目录 前言一、URP Shader 纹理采样的实现1、在属性面板定义一个2D变量用于接收纹理2、申明纹理3、申明采样器4、进行纹理采样 二、申明纹理 和 申明采样器内部干了什么1、申明纹理2、申明采样器 三、采样器设置采样器的传入格式1、纹理设置中&#xff0c;可以看见我们的采样…...

Electron学习第一天 ,启动项目

之前在安装官网的步骤操作&#xff0c;结果报错&#xff0c;找了好多办法&#xff0c;最后这种办法成功启动项目&#xff0c;并且没有报错&#xff0c;特此记录 特别提醒&#xff0c;最好安装淘宝镜像&#xff0c;npm 太慢&#xff0c;会导致报错问题&#xff0c;解决起来个人觉…...

WebService技术--随笔1

1.WebService 发展史 创建阶段&#xff08;1990 年代末至 2000 年代初&#xff09;&#xff1a;在这个阶段&#xff0c;XML-RPC 和 SOAP 协议被引入&#xff0c;为跨平台和跨语言的应用程序集成提供了基础。XML-RPC 提供了一种基于 XML 的远程过程调用机制&#xff0c;而 SOAP…...

如何使用Docker将.Net6项目部署到Linux服务器(一)

目录 一 配置服务器环境 1.1 配置yum 1.1.1 更新yum包 1.1.2 yum命令 1.2 配置docker …...

第4章-第3节-Java中跟数组相关的几个算法以及综合应用

在写这篇博文之前&#xff0c;先大概说明一下&#xff0c;就是很常见的数组算法如求最大值、一维数组的遍历等&#xff0c;这里就不去专门说明了&#xff0c;只说一些有代表性的&#xff0c;然后就是冒泡排序算法很容易查阅到&#xff0c;这里也不专门说明了&#xff0c;只说明…...

AlexNet(pytorch)

AlexNet是2012年ISLVRC 2012&#xff08;ImageNet Large Scale Visual Recognition Challenge&#xff09;竞赛的冠军网络&#xff0c;分类准确率由传统的 70%提升到 80% 该网络的亮点在于&#xff1a; &#xff08;1&#xff09;首次利用 GPU 进行网络加速训练。 &#xff…...

【单调栈 】LeetCode321:拼接最大数

作者推荐 【动态规划】【广度优先搜索】LeetCode:2617 网格图中最少访问的格子数 本文涉及的知识点 单调栈 题目 给定长度分别为 m 和 n 的两个数组&#xff0c;其元素由 0-9 构成&#xff0c;表示两个自然数各位上的数字。现在从这两个数组中选出 k (k < m n) 个数字…...

TikTok与虚拟现实的完美交融:全新娱乐时代的开启

TikTok&#xff0c;这个风靡全球的短视频平台&#xff0c;与虚拟现实&#xff08;VR&#xff09;技术的深度结合&#xff0c;为用户呈现了一场全新的娱乐盛宴。虚拟现实技术为TikTok带来了更丰富、更沉浸的用户体验&#xff0c;标志着全新娱乐时代的开启。本文将深入探讨TikTok…...

PXI/PCIe/VPX机箱 ARM|x86 + FPGA测试测量板卡解决方案

PXI便携式测控系统是一种基于PXI总线的便携式测试测控系统&#xff0c;它填补了现有台式及机架式仪器在外场测控和便携测控应用上的空白&#xff0c;在军工国防、航空航天、兵器电子、船舶舰载等各个领域的外场测控场合和科学试验研究场合都有广泛的应用。由于PXI便携式测控系统…...

ES6 面试题 | 12.精选 ES6 面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

【linux】Debian不能运行sudo的解决

一、问题&#xff1a; sudo: 没有找到有效的 sudoers 资源&#xff0c;退出 sudo: 初始化审计插件 sudoers_audit 出错 二、可用的方法&#xff1a; 出现 "sudo: 没有找到有效的 sudoers 资源&#xff0c;退出" 和 "sudo: 初始化审计插件 sudoers_audit 出错&q…...

讲解ThinkPHP的链式操作

数据库提供的链式操作方法&#xff0c;可以有效的提高数据存取的代码清晰度和开发效率&#xff0c;并且支持所有的CURD操作。 使用也比较简单&#xff0c;假如我们现在要查询一个User表的满足状态为1的前10条记录&#xff0c;并希望按照用户的创建时间排序 Db::table(think_u…...

Java技术栈 —— 微服务框架Spring Cloud —— Ruoyi-Cloud 学习(二)

RuoYi项目开发过程 一、登录功能(鉴权模块)1.1 后端部分1.1.1 什么是JWT?1.1.2 什么是Base64?为什么需要它&#xff1f;1.1.3 SpringBoot注解解析1.1.4 依赖注入和控制反转1.1.5 什么是Restful?1.1.6 Log4j 2、Logpack、SLF4j日志框架1.1.7 如何将项目打包成指定bytecode字节…...

如何进行软件测试和测试驱动开发(TDD)?

1. 软件测试概述 1.1 什么是软件测试&#xff1f; 软件测试是一种评估系统的过程&#xff0c;目的是发现潜在的错误或缺陷。通过对软件进行测试&#xff0c;开发者和测试人员可以确定软件是否符合预期的需求、功能是否正常运行&#xff0c;以及系统是否足够稳定和可靠。 1.2…...

linux 开机启动流程

1.打开电源 2.BIOS 有时间和启动方式 3.启动Systemd 其pid为1 4.挂载引导分区 /boot 5.启动各种服务 如rc.local...

深入浅出wordpress pdf/站长工具日本

Element-ui 在你的项目所在的文件中&#xff0c;上方面包屑目录上输入cmd&#xff0c;然后回车&#xff0c;打开小黑框 在小黑框中输入 npm install element-ui -s命令&#xff0c;&#xff08;cnpm是比较快&#xff09;&#xff0c;回车 到这步&#xff0c;说明element-ui…...

wordpress 断点调试/推广文案范例

链接: RecommenderSystem_userCF-itemCF-CB...

做素材网站存储/百度sem代运营

最佳答案//index下标从0开始public static int[] remove(int[]ary,int index){int[]array new int[ary.length-1]; //返回数组int flag 0; //作为标识&#xff0c;表示是否已删除index位置处的值,0表示未到//满足以下条件&#xff0c;返回nullif(arynull||ary.length<1||i…...

天津做网站选择津坤科技b/互联网营销培训平台

前言 前几天, 看 R大 的一篇文章的时候, 发现了一篇有趣的文章 : https://rednaxelafx.iteye.com/blog/850082 关于这篇文章的重点 反序列化 来创建对象的细节, 我也还是想了解了解 我之前以为的就是 序列化就是 先把对象的相关元数据 以及 相关的需要存储的数据信息 序列华…...

南充网站建设与维护/百度搜索关键词排名

表现&#xff1a;vue项目中&#xff0c;进入页面的时候&#xff0c;报错如下 原因&#xff1a;我把Echarts 的初始化&#xff0c;写到了created 的回调函数中了&#xff0c; 解决办法&#xff1a;将初始化写到mounted的回调函数中 理由&#xff1a; created: 在模板渲染成htm…...

长沙做公司网站/谷歌seo推广服务

//查找 键是"a"的元素&#xff0c;返回指向元素的指针。 itword.find ("a"); //若是元素不存在&#xff0c;指针指向word.end(). if(it!word.end ()) cout<<it->second<<endl; //输出元素的值 void main() { //定义map 对象 map<…...