变量的存储类型

auto类型

简述:c和c++中的区别 

auto类型表示自动存储类型 :  就是系统自动分配内存,使用结束后系统回收。 

其实auto类型就是我们平时定义的局部变量,所以我们定义一个auto类型的变量,加auto都可以。 

{
auto int a = 10;
}

上面这行代码, 其实和 int a = 10; 是一样的。    

但是,  

在C语言中,加不加auto都没有问题,不会报错。

在c++中,如果加了auto,是会报错的,因为c++中对auto进行了升级(有了一定的功能),并不是像C语言那样可写可不写。

 

register类型

1. 简述 :

 1. register类型表示寄存器类型, 顾名思义就是使用该类型定义的变量可以放到寄存器中(但并不是一定)。

寄存器是用来临时存储数据的, 因为其的执行速度比内存快的多,但是空间很小,所以一般将使用频率高的放到寄存器中,以提高效率。 鉴于这一点,我们可以在定义变量的时候,加register关键字,但是它不一定会被放到寄存器中,因为前面说了,放的都是频繁使用的,你随便定义一个数据,但是它整个程序就用一次,放进去不是浪费资源吗,或者,你定义之后,寄存器没有空间了,你当然也放不进去,所以并不是只要用register定义的变量都会往寄存器里面放。 

2. 对寄存器变量取地址: c和c++的区别

2.  既然register定义的变量可能在寄存器中(即使它最后没有放到寄存器中),寄存器中是没有地址的,所以我们不能对register的变量进行寻址。(即使它最后没有放进去也不能)  ------  C语言

    鉴于上面的情况c++进行了一些改变, 当你对寄存器变量进行取地址时,c++会将其降级为一个自动变量,自动变量当然在内存中存储,也有地址。 ------- c++

    综上,对寄存器变量寻址,C语言不允许,c++允许。 

3. 注意: 全局变量不能加register。

 

extern类型 

1. 简述: 

说到这个类型,就要提到全局变量了, 

main.cpp:
int a = 10;

main1.cpp:
extern int a;

上面代码,main.cpp和main1.cpp是一个项目的两个源文件。 

在 main.cpp中定义了一个全局变量, 这个全局变量不仅可以在此源文件中使用,也可以在该项目的其它源文件中使用。 

而我们在其它源文件中使用别的源文件中的全局变量,就需要加一个声明,告诉编译器我们使用的这个变量是引用的外面文件的,这时候就需要使用extern关键字了。 

extern int a; 就是告诉编译器,如果没有定义一个变量a,那么这个a使用的是其它源文件的外部变量。 

注意: 如果使用extern不能对其初始化,如果初始化了,就表示在本源程序中定义了一个变量,而不是引用外部变量了。

例:  extern int a = 10; 这个就是在main1.cpp中定义了一个全局变量a(同一个项目中的各个源程序的全局变量名不能相同)。 

 

static类型 

1. 全局变量 

 前面说到extern关键字,可以使用别的源文件定义的全局变量,那么如果不想让别的源文件使用我们的全局变量,那么直接在顶以前加上static就可以了。 

2. 局部变量 

将static作用在局部变量上,那么它的生命周期就和程序一样了,但是只能作用域定义它的块内。 

void age()
{
  int age_boy = 1;
}

上面的函数中,我们想要每次调用函数,给age_boy加1,如果就像上面代码所示,是无法实现的,因为每次调用函数都重新定义,它的初始值永远都为1,但是我们加上static就不一样了,此时只有第一次调用函数会定义该变量,每次调用函数对其+1都是对上次的数据+1。 

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

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

相关文章

Java EE Servlet之Servlet API详解

文章目录 1. HttpServlet1.1 核心方法 2. HttpServletRequest3. HttpServletResponse 接下来我们来学习 Servlet API 里面的详细情况 1. HttpServlet 写一个 Servlet 代码,都是要继承这个类,重写里面的方法 Servlet 这里的代码,只需要继承…

CSS与JavaScript的简单认识

CSS:是一门语言,用于控制网页表现,让页面更好看的。 CSS(Cascading Style Sheet):层叠样式表 CSS与html结合的三种方式: 1、内部样式:用style标签,在标签内部定义CSS样式…

DevOps持续交付之容器化CICD流水线

DevOps持续交付 随着DevOps⼤规模化的落地和应⽤,持续集成以及持续交付已经是⼀种常态的。CI指的是持续集成,使⽤的开源⼯具是Jenkins,CD指的是持续交付和持续部署,⼀个完整的软件开发⽣命周期为: 主要流程可以具体为: 构建阶段…

12.26

key_it.c #include"key_it.h" void led_init() {// 设置GPIOE/GPIOF时钟使能RCC->MP_AHB4ENSETR | (0x3 << 4);// 设置PE10/PE8/PF10为输出模式GPIOE->MODER & (~(0x3 << 20));GPIOE->MODER | (0x1 << 20);GPIOE->MODER & (~…

如何在iterm2的命令行中快速移动

文章目录 一、打开Preferences设置二、进行key的映射三、修改键值四、参考文献 一、打开Preferences设置 二、进行key的映射 三、修改键值 四、参考文献 Mac下iTerm2光标按照单词快速移动设置

【回顾 展望】我的2023年度总结

2023年度关键词 学生时代终将绕不开的学习我的健身水平何时能重回巅峰&#xff1f;对生活前所未有的渴望接下来的2024是否能够微笑面对 最近发现了一个比较有意思的事&#xff0c;各大APP都在推我在这个APP的使用方面的2023年度总结&#xff0c;各个up主&#xff0c;也都在发各…

开发知识点-JAVA图形化-JavaFX

JavaFX JavaFX通用漏洞利用工具开发从无到无环境配置vscode配置JavaFX JavaFX基本程序结构创建项目新建一个包新建入口类&#xff08;主类&#xff09;新建&#xff08;FX&#xff09;label标签 创建按钮 JavaFX应用的 Stage窗口JavaFX应用的 Scene 场景类Node UI控件的通用属性…

纯CSS3制作优惠券线性UI效果

纯CSS3制作优惠券线性UI效果-遇见你与你分享

自激振荡电路笔记 电弧打火机

三极管相关 三极管的形象描述 二极管 简单求解&#xff08;理想&#xff09; 优先导通&#xff08;理想&#xff09; 恒压降 稳压管&#xff08;二极管plus&#xff09; 基础工作模块 理想稳压管的工作特性 晶体管之三极管(“两个二极管的组合” ) 电弧打火机电路 1.闭合开…

nodejs微信小程序+python+PHP的冷链物流配送系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

推荐几个开源HTTP服务接口快速生成工具

在现在流行微服务、前后端分离软件开发架构下&#xff0c;基于标准RESTful/JSON的HTTP接口已经成为主流。在实际业务中有很多需要快速开发调用数据服务接口的需求&#xff0c;但团队中缺乏专业的后端开发人员&#xff0c;比如&#xff1a; &#xff08;1&#xff09;数据库表已…

Java定时器

目录 什么是定时器&#xff1f; 如何使用定时器&#xff1f; schedule Timer的构造方法 cancel 定时器的模拟实现 思路分析 实现过程 完整代码 什么是定时器&#xff1f; 定时器&#xff1a;即在设定的时间时执行某事的设备&#xff08;例如闹钟&#xff0c;在指定的时…

python期刊稿件在线投稿系统q2ud0

本系统的用户可分为管理员、投稿者、审稿人和编辑四个用户角色组成。管理员可以管理系统内所有功能&#xff0c;主要有个人中心、投稿者管理、审稿人管理、编辑管理、个人稿件管理、审核稿件管理、稿件信息管理、类型管理等功能&#xff1b;编辑登录系统主要有个人中心、审核稿…

大模型训练过程概述

上图来自 Andrej Karpathy&#xff0c;深度学习的大拿&#xff0c;目前在Tesla。这张图的信息量相当大&#xff0c;通过该图能让我们对大模型的整个训练过程有一个总体的了解。 从该图可知大模型训练主要有4步&#xff1a; Pretraining — 预训练阶段 Supervised Finetuning&…

透过许战海矩阵洞察安记食品增长战略

引言&#xff1a;安记食品如果想实施增长战略&#xff0c;建议深耕招牌产品,走向全国市场,目前招牌产品咖哩和复合调味粉市场空间没有被全面释放出来,需要科学的产品战略作为支撑。安记食品选择功能性产品方向是正确的,但“功能性”需要一个大品类作为载体,牛奶,饮料是最大的载…

C# Onnx yolov8n forklift detection

目录 效果 模型 项目 代码 下载 C# Onnx yolov8n forklift detection 效果 模型 Model Properties ------------------------- date&#xff1a;2023-12-25T16:22:05.530078 author&#xff1a;Ultralytics task&#xff1a;detect license&#xff1a;AGPL-3.0 https:/…

牛客网SQL训练4—SQL进阶挑战

文章目录 一、增删改操作1. 插入记录2. 更新记录3. 删除记录 二、表与索引操作1. 表的创建、修改与删除2. 索引的创建、删除 三、聚合分组查询1. 聚合函数2. 分组查询 四、多表查询1. 嵌套子查询2. 合并查询3. 连接查询 五、窗口函数1. 专用窗口函数2. 聚合窗口函数 六、其他常…

分布式【4. 什么是 CAP?】

什么是 CAP&#xff1f; C 代表 Consistency&#xff0c;一致性&#xff0c;是指所有节点在同一时刻的数据是相同的&#xff0c;即更新操作执行结束并响应用户完成后&#xff0c;所有节点存储的数据会保持相同。 A 代表 Availability&#xff0c;可用性&#xff0c;是指系统提…

开源radishes高仿网易云音乐完整源码,可试听和下载“灰色”歌曲,跨平台的无版权音乐平台

源码介绍 Radishes是项目名称&#xff0c;是由萝卜翻译而来。可以在这里试听和下载“灰色”歌曲&#xff0c;是一个可以跨平台的无版权音乐平台。 萝卜音乐界面和功能参考 windows 网易云音乐界面和 ios 的网易云音乐 安装依赖 cd radishes/ yarn bootstrap 运行项目 web:…

【回溯】0-1背包Python实现

文章目录 [toc]问题描述形式化描述 回溯法时间复杂性Python实现 个人主页&#xff1a;丷从心 系列专栏&#xff1a;回溯法 问题描述 给定 n n n种物品和一背包&#xff0c;物品 i i i的重量是 w i w_{i} wi​&#xff0c;其价值为 v i v_{i} vi​&#xff0c;背包的容量为 c …