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

C++基础中的存储类别

  存储的类别是变量的属性之一,C++语言定义了4种变量的存储类别,分别是auto变量、static变量、register变量和extern变量。以下重点介绍这几种类型。

一、auto变量 

  auto变量是C++默认的存储类型。函数内未加存储类型说明的变量均被称为自动变量,即自动变量可省略关键字auto。

{int i, j, k;
}
等价于
{auto int i, j, k;
}

 

 auto变量具有以下特点:

  1. 自动变量的作用域仅限于定义该变量的个体内;
  2. 自动变量属于动态存储方式,变量分配的内存在栈中,当函数调用结束后,自动变量的值会被释放;
  3. 自动变量的作用域和生命期都局限于定义它的个体(函数或复合语句内),不同个体中允许使用同名的变量,不会产生混淆。 

 输出不同生命期的变量值,代码如图1.1所示。

图1.1

 

程序运行结果如1.2所示 

图1.2

 

 二、static变量

  在声明变量前加关键字static,可以将变量声明成静态变量。

//声明变量为静态变量
static int a, b;
static float x, y;
static int a[3]={0, 1, 2};

使用static变量实现累加代码如图2.1

图 2.1

 

 程序运行结果如图2.2所示。

图 2.2

三、register变量 

  在C++中,register关键字用于声明一个寄存器变量。使用register声明的变量,编译器会尽量将其存储在寄存器中,以提高访问速度。由于寄存器变量存储在寄存器中,它们的访问速度会比存储在内存中的变量更快。但需要注意的是,register关键字只是对编译器提供的一个建议,编译器不一定会将变量存储在寄存器中。编译器可能会根据实际情况决定是否将变量存储在寄存器中,比如当寄存器的数量有限时。此外,有些编译器可能已经不再支持register关键字,因为现代的编译器已经足够智能,能够根据代码的上下文自动进行优化,包括变量的存储和访问。

  综上所述,register关键字在现代的C++中已经不常用或不再具有实际意义,而且有些编译器可能已经不再支持。因此,在实际编程中,我们通常不需要使用register关键字来声明寄存器变量。

 

四、extern变量 

  在C++中,extern关键字用于声明一个变量,表明该变量是在其他地方定义的。当我们在一个C++文件中使用extern声明一个变量时,实际上是告诉编译器在其他文件中定义了这个变量,需要在链接时找到它。

  在示例1.cpp源文件中定义全局变量a、b、c,代码如下。 

 

 

  在示例2.cpp源文件中要使用示例1.cpp中的全局变量a、b、c,代码如下。

 

 

五、总结

    以上就是今天要讲的内容,本文简单介绍了C++基础中的变量类型如auto变量、static变量、register变量和extern变量以及应用。

六、结言

    感谢大家的阅读与参与,您的支持是我前进的动力!让我们一起进步,加油!谢谢您的支持!!!

相关文章:

C++基础中的存储类别

存储的类别是变量的属性之一,C语言定义了4种变量的存储类别,分别是auto变量、static变量、register变量和extern变量。以下重点介绍这几种类型。 一、auto变量 auto变量是C默认的存储类型。函数内未加存储类型说明的变量均被称为自动变量,即…...

【NPM】Nginx Proxy Manager 一键申请 SSL 证书,自动续期,解决阿里云SSL免费证书每3个月失效问题

文章目录 1、NPM 简介2、实战Step 1:环境搭建 也可以看作者安装笔记 Step 2:创建容器 2.1 在系统任意位置创建一个文件夹,此文档以~/nginx-proxy-manager为例。2.2 创建docker-compose.yaml2.3 启动NPM服务 Step 3:配置反向代理3…...

教你解决PUBG绝地求生游戏中闪退掉线无法重连回去的问题

《绝地求生》(PUBG),作为一款在全球范围内掀起热潮的战术竞技游戏,以其栩栩如生的战场环境和令人心跳加速的生存冒险博得了广大玩家的青睐。然而,一些玩家在经历了一场惊心动魄的对局后,却面临了一个不大不…...

24 Debian如何配置Apache2(4)LAMP+phpMyAdmin部署

作者:网络傅老师 特别提示:未经作者允许,不得转载任何内容。违者必究! Debian如何配置Apache2(4)LAMP+phpMyAdmin部署 《傅老师Debian小知识库系列之24》——原创 ==前言== 傅老师Debian小知识库特点: 1、最小化拆解Debian实用技能; 2、所有操作在VM虚拟机实测完成;…...

centos安装paddlespeech各种报错解决方案

背景 windows系统安装paddlespeech一路顺利 centos安装之前也是正常 今天centos再次安装各种报错,避免以后遇到浪费时间,记录下来,也给大家节约时间 报错 报错1 module numpy has no attribute complex. 解决方案 降低numpy # 1. 卸载当前numpy库 pip uninstall numpy…...

谈基于ATTCK框架的攻击链溯源

引言 网络安全在当今数字化时代变得尤为关键,而MITRE公司开发的ATT&CK框架则成为了安全专业人员的重要工具。ATT&CK是一种广泛使用的攻击行为分类和描述框架。其目的在于提供一个共同的语言,使安全专业人员能够更好地理解攻击者的行为和目标&…...

在Ubuntu下搭建自己的以太坊私有链

最近要对链及链上应用进行压测,为了方便操作及分析问题,就自己搭建了一个eth私链。当前版本安装官方指引发现有卡点,于是决定整理一个文档,为其他有需要的朋友提供便捷操作,节约时间。 一、环境配置 linux操作系统:Ubuntu 20.04.6 LTS (Focal Fossa) go version: go1…...

巩固学习4

python中函数逆置的几种方法 s input()for i in range(len(s)-1,-1,-1):#从最后一位开始,步长为-1print(s[i],end)用for语句循环逆置 s input() s list(s) n len(s) for i in range(n//2):s[i],s[n-1-i] s[n-1-i],s[i]#从中间反转字符串 res "".j…...

Conda安装rasterio报错

Conda安装rasterio报错 文章目录 Conda安装rasterio报错问题解决参考 问题 在conda环境中安装rasterio包之后,本来可以正常运行的,但是之后又重新安装了一个gdal,导致原来的引用rasterio的包的程序不可正常运行了 conda install rasterio c…...

linux安装 mysql

环境:centOS8 一、安装 1 安装wget库 sudo yum -y install wget 2. 安装 mysql 换yum源 亲测成功!!!!!! 换yum源 1.下载对应版本的repo文件 wget -O CentOS-Base.repo http://mirrors…...

暴力法解决最近对问题和凸包问题-实现可视化

目录 最近对问题 凸包问题 最近对问题 顾名思义就是采用蛮力法求出所有点之间的距离,然后进行比较找出第一个最近对,一个一个进行比较。 大概思路就是如图(每个圈代表一个数对) 第一个和其他四个比较 第二个和其他三个比较 …...

[Kubernetes] Rancher 2.7.5 部署 k8s

server: 192.168.66.100 master: 192.168.66.101 node1: 192.168.66.102 文章目录 1.rancher server 安装docker2.部署k8s3.kubeconfig4.测试集群 1.rancher server 安装docker 所有主机开通ipv4 vi /etc/sysctl.conf#加入 net.ipv4.ip_forward 1#配置生效 sysctl -prancher…...

码题杯 世界警察 思想:双指针

https://www.matiji.net/exam/brushquestion/4/4446/16A92C42378232DEB56179D9C70DC45C 双指针 思路是这样的,首先r指针向右走,如果r指针遇到了和l指针一样的,那么l指针就,一直加到r指针的位置,此时a[l]a[r]&#xff0…...

drawio 网页版二次开发(1):源码下载和环境搭建

目录 一 说明 二 源码地址以及下载 三 开发环境搭建 1. 前端工程地址 2. 配置开发环境 (1)安装 node.js (2)安装 serve 服务器 3. 运行 四 最后 一 说明 应公司项目要求,需要对drawio进行二次开发&…...

算法训练Day33 |● 509. 斐波那契数 ● 70. 爬楼梯 ● 746. 使用最小花费爬楼梯

509. 斐波那契数 class Solution { public:int fib(int n) {if(n<1) return n;int pre2 0;int pre1 1;int result 0;for(int i2; i<n; i ){result pre1pre2;pre2 pre1;pre1 result;}return result;} };参考文章&#xff1a;代码随想录- 509. 斐波那契数 70. 爬楼梯…...

【算法】滑动窗口——将x减到0的最小操作数

本节博客主要是讲的我解“将x减到0的最小操作数”这道题的思路历程&#xff0c;从最开始的想法到代码提交的详细记录&#xff0c;有需要借鉴即可。 目录 1.题目2.代码示例3.细节3.1left越界3.2特殊情况 4.总结 1.题目 题目链接&#xff1a;LINK 看题目意思是就是给你一个数X&…...

《引爆流量获客技术》实操方法,手把手教你搭建盈利流量池

[1]-先导课.mp4 [2]-第1节&#xff1a;设计客户终身价值的方法和买客户思维.mp4 [3]-第2节&#xff1a;【渠道模型】解决谁是我的客户如何找到.mp4 [4]-第3节&#xff1a;【诱饵模型】解决 如何获得更多的客户.mp4 [5]-第4节&#xff1a;【钩子模型】解决让目标客户主动找你…...

【记录】常见的前端设计系统(Design System)

解释一下设计系统的定义&#xff0c;以及在国内&#xff0c;都有那些优秀的设计系统可以学习&#xff0c;希望可以帮到大家。 什么是设计系统&#xff08;Design System)&#xff1f; 设计系统&#xff08;Design System&#xff09;是一套综合性的指导原则、组件和规则&…...

如何使用Whisper音频合成模型

Whisper 是一个通用语音识别模型&#xff0c;由 OpenAI 开发。它可以识别多种语言的语音&#xff0c;并将其转换为文本。Whisper 模型采用了深度学习技术&#xff0c;具有高准确性和鲁棒性。 1、技术原理及架构 Whisper 的工作原理&#xff1a;音频被分割成 30 秒的片段&#…...

网络相关笔记

IPv4地址 IPv4地址通常以“点分十进制”形式书写&#xff0c;即四个0-255之间的十进制数&#xff0c;各数之间用英文句点&#xff08;.&#xff09;分隔&#xff0c;例如&#xff1a;192.0.2.1。总共32位的地址空间可以表示大约42亿个不同的地址。 IPv4地址结构包括&#xff…...

CLIP-GmP-ViT-L-14图文匹配工具实测:电商搜图、智能相册应用场景解析

CLIP-GmP-ViT-L-14图文匹配工具实测&#xff1a;电商搜图、智能相册应用场景解析 你有没有想过&#xff0c;当你在电商平台用一张随手拍的照片搜索商品时&#xff0c;背后的技术是怎么工作的&#xff1f;或者&#xff0c;当你对着手机相册输入“去年夏天在海边拍的日落”&…...

8-Bit美学不妥协性能|像素剧本圣殿UI渲染与LLM推理资源隔离方案

8-Bit美学不妥协性能&#xff5c;像素剧本圣殿UI渲染与LLM推理资源隔离方案 1. 项目概述 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是一款专为剧本创作者设计的AI辅助工具&#xff0c;基于Qwen2.5-14B-Instruct大模型深度微调开发。它将高性能AI推理能力与独…...

爆火Agent Harness:驯服AI的终极秘籍,三大巨头如何让AI从玩具变工具?

文章深入探讨了Agent Harness在AI落地中的关键作用&#xff0c;指出当前许多Agent应用存在长程任务失忆、遗留代码迷路、生成交付断链、确定性和安全性翻车等问题。文章剖析了Anthropic、OpenAI、LangChain三大巨头的Harness实践&#xff0c;如Anthropic的脚手架和独立评估器解…...

Linux七大常见误解与真相解析

1. Linux 神话的起源与现状Linux 作为开源操作系统的代表&#xff0c;自1991年诞生以来就伴随着各种误解和神话。这些误解往往源于早期Linux的使用门槛较高、图形界面不够完善等历史原因。但经过30多年的发展&#xff0c;现代Linux发行版已经发生了翻天覆地的变化。在技术社区中…...

Qt QTabWidget标签页文字方向调校实战:当标签在左侧时,如何让文字乖乖水平显示?

Qt QTabWidget标签页文字方向调校实战&#xff1a;当标签在左侧时&#xff0c;如何让文字乖乖水平显示&#xff1f; 在桌面应用开发中&#xff0c;Qt框架的QTabWidget组件因其灵活性和易用性广受开发者青睐。但当我们尝试将标签页位置调整为左侧时&#xff0c;一个令人头疼的问…...

避开这5个坑,你的YOLO模型训练效率翻倍:从yaml配置到GPU显存优化实战

YOLO模型训练效率翻倍的5个关键避坑指南&#xff1a;从参数调优到显存管理实战 当你第一次用YOLOv10或v11跑通训练流程时&#xff0c;可能会觉得"不过如此"。但真正投入实战后&#xff0c;90%的开发者都会遇到显存爆炸、训练龟速、指标波动三大噩梦。上周有位使用RTX…...

SQL Server服务启动失败?手把手教你用Local System账户解决SQLEXPRESS报错126

SQL Server服务启动失败&#xff1f;手把手教你用Local System账户解决SQLEXPRESS报错126 当你正准备开始一天的工作&#xff0c;突然发现SQL Server服务无法启动&#xff0c;屏幕上赫然显示着错误代码126&#xff0c;这种突如其来的技术故障往往让人措手不及。作为数据库管理员…...

python异常模拟工具类(异常生成工具类)

文章目录创建代码类使用主要是做测试的时候方便&#xff0c;创建代码类 1、新建python文件exception_mock_utils.py&#xff0c;代码为&#xff1a; import random import time from typing import Any, Optionalclass ExceptionMockUtils:"""异常模拟工具类用…...

收藏!小白也能看懂的大模型推理能力训练与未来趋势深度解析

文章讨论了大模型的发展历程&#xff0c;从早期的“读很多书”模式到引入“思考”能力的转变。重点介绍了推理式思考与智能体式思考的区别&#xff0c;以及Qwen团队在模型训练中的经验与挑战。文章指出&#xff0c;未来的重心将从单纯训练模型“思考”转向训练智能体“边想边做…...

SpringAI集成Ollama实战:从零构建本地AI对话服务

1. 环境准备&#xff1a;搭建Ollama本地AI模型服务 想要在本地运行AI对话服务&#xff0c;首先需要部署Ollama这个轻量级的大模型运行环境。Ollama最大的优势在于它能让开发者在普通配置的电脑上就能运行各种开源大模型&#xff0c;而不需要昂贵的GPU服务器。 安装过程非常简单…...