首页 > 其他分享 >变量是什么? auto register关键字

变量是什么? auto register关键字

时间:2024-09-16 14:02:00浏览次数:7  
标签:register 变量 auto 局部变量 关键字 内存 全局变量

目录

变量

程序的本质:二进制文件

运行程序,即将程序中的数据加载到内存中运行
为什么要加载到内存? 1.冯诺依曼体系决定 2.快

1.变量:内存上的某个位置开辟的空间

因为变量都是程序运行起来才开辟的

2.变量的初始化:

变量的空间被开辟后,就应当具有对应的数据,即必须要初始化.表示该变量与生俱来的属性就是该初始值

3.为什么要有变量

计算机是为了解决人计算能力不足的问题而诞生的.即,计算机是为了计算的.
而计算,就需要数据
而要计算,任何时刻,不是所有的数据都要立马被计算,因此有的数据需要暂时被保存起来,等待后续处理. 所以需要变量

4.局部变量与全局变量
  • 局部变量:包含在代码块中的变量叫做局部变量.局部变量具有临时性.进入代码块,自动形成局部变量,退出代码块自动释放. 局部变量在栈区保存
  • 全局变量:在所有函数外定义的变量,叫做全局变量.全局变量具有全局性.全局变量在全局已初始化数据区保存.
  • 代码块:用花括号{}括起来的区域,就叫做代码块.
5.变量的大小由类型决定
6.任何一个变量,内存赋值都是从低地址开始往高地址

所以首地址和取地址永远都是低地址

1.1 关键字auto

默认情况下,编译器默认所有的局部变量都是auto的,auto一般只能用来修饰局部变量,不能修饰全局变量.ju'bu也叫自动变量.一般情况下都是省略auto关键字的.基本永不使用

1.2 关键字register

建议性关键字,建议编译器将该变量优化到寄存器上,具体情况由编译器决定
(不建议大量使用,因为寄存器数量有限)

什么样的变量可以采用register?
  1. 局部的(全局会导致CPU寄存器被长时间占用)
  2. 高频被读取的(提高访问效率)
  3. 不会被写入的(写入就需要写回内存,后续还需要读取检测的话,register就没有意义了)

寄存器变量是不能被取地址的,因为不在内存中,就没有内存地址
register不会影响变量的生命周期,只有static会影响变量的生命周期

标签:register,变量,auto,局部变量,关键字,内存,全局变量
From: https://www.cnblogs.com/DSCL-ing/p/18414568

相关文章

  • autoGPT metagpt crewAI langgraph autogen camel 哪些框架适用于多模态场景?(文心一言)
    autoGPTmetagptcrewAIlanggraphautogencamel哪些框架适用于多模态场景?特点:CrewAI是一个专门用于创建多模态代理的技术,能够同时处理文本、图像和音频数据。它提供了构建多模态代理所需的工具和库,使得开发者能够更容易地集成不同模型以处理多种数据类型。应用场景:适用于......
  • AutoCAD C# 判断多边形与点的位置关系
    书上说,射线法和叉乘法感觉都不完整 下面我分享我写的基于AutoCADBREP算法 vared=acApp.Application.DocumentManager.MdiActiveDocument.Editor;varpeo=newPromptEntityOptions("SelectaPolyLine:");peo.SetRejectMessage("OnlyPolyLine");peo.AddAll......
  • AutoSar AP平台的SOMEIP文档的理解笔记
    前言前段时间,阅读了AutoSarAP的SOME/IP的标准文档(《SOME/IPProtocolSpecification.pdf》),并以PPT的图文并茂的形式做了理解笔记,内容主要是SOME/IP的协议规范,由SOME/IP报文格式和协议部分。1.SOMEIP报文格式1.1SOME/IP消息格式:头格式1.2SOME/IP头格式:RequestID(Clie......
  • C++ auto 类型推断注意的地方
    inti=0,&r=i;autoa=r;//a是一个整数(r是i的别名,而i是一个整数)intaauto一般会忽略掉顶层const(参见2.4.3节,第57页),同时底层const则会保留下来,比如当初始值是一个指向常量的指针时:constintci=i,&cr=ci;autob=ci;//b......
  • [Whole Web] Auto check application website's updates
    Inaproductionenvironment,wewanttoprompttheuserwithamessagewhennewscriptsareavailable,askingNewscriptsareavailable.Doyouwanttoupdate?Theideaisstraightforward:periodically(e.g.,everyminute,10seconds,dependsonyourcase......
  • C++ 定义静态成员 static 关键字不能在定义出重复出现
    定义静态成员和其他的成员函数一样,我们既可以在类的内部也可以在类的外部定义静态成员函数。当在类的外部定义静态成员时,不能重复static关键字,该关键字只出现在类内部的声明语句:voidAccount::rate(doublenewRate){interestRate=newRate;}Note:和类的所有成员一样,当我......
  • QTreeView实现搜索功能并且关键字标红
    1、需求描述实现组织树搜索,关键字红色显示;搜索规则,名称匹配显示,没有匹配不显示,子节点匹配,父节点即使没有匹配也显示;2.实现方法(1)top节点名称匹配关键则显示,否则隐藏voidTreeTaskList::SlotFilterChanged(QStringstrText){m_TreeDelegate->setProperty("FilterString"......
  • java_day1_认识计算机,java环境,Java关键字、标识符、注释
    一、认识计算机1、组成:硬件:cpu,内存,显卡,...软件:系统软件:WPS,wegame,steam,IDEA,.....应用软件:WPS,wegame,steam,IDEA,.....2、认识键盘:功能键:tap,空格,``飘号键快捷键:ctrl+a[c|v|x|z]3、DOS命令dircdxxx盘符:clsexit二、java环......
  • 强!推荐一款Python开源自动化脚本工具:AutoKey!
    1、前言在数字化时代,自动化工具成为了提升工作效率和生产力的重要手段。Python作为一种广泛使用的编程语言,以其强大的功能和易用性受到许多开发者的青睐。而今天给大家推荐一款开源的自动化脚本工具:AutoKey。结合Python的强大编程能力与AutoKey的任务自动化特性,用户可以高效地......
  • Java入门:08.Java中的static关键字01
    1static关键字可以修饰属性变量,方法和代码段static修饰的属性称为静态属性或类属性,在类加载时就在方法区为属性开辟存储空间,无论创建多少个对象,静态属性在内存中只有一份。可以使用类名.静态属性的方式引用static修饰的方法称为静态方法或类方法,在类加载时就在方法......