C++变量的储存类别及特点

C++变量存储类别 而对自动变量来说,如果不赋初值,则它的值是一个不确定的值。这是由于每次函数调用结束后存储单元已释放,下次调用时又重新另分配存储单元,而所分配的存储单元中的值是不确定的。 阅读详情

C++语言中定义了4种储存类别,分别是auto变量,static变量,register变量。

  • 静态变量通常是在变量定义时就分配固定的存储单元并一直保持不变,直至整个程序结束,他们存储在静态存储区中。
  • 动态变量是在程序执行过程中使用它时才分配存储单元,使用完毕立即将存储单元释放。

1、auto变量

自动变量存储类型是C++语言程序中默认的存储类型。函数内未加存储类型说明的变量均视为自动变量,也就是说自动变量可以省去关键字auto。

自动变量的特点:

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

2、static变量

在声明变量前加关键字static,t可以将变量声明为静态变量。静态局部变量的值在函数调用结束后不会消失,静态全局变量只能在本源文件中使用。

static变量特点

  • 静态变量在函数内蒂尼,在程序退出时释放,在整个程序运行期间不释放,也就是说它的生命周期为整个程序
  • 静态变量的作用域与自动变量相同,在函数内定义就在函数内使用,尽管改变量没有被释放,但不能使用它,如再次定义它的函数时,它又可以继续使用。
  • 编译器会为静态局部变量赋予0值(今天变量和全局变量,如果没有显式初始化,都会被初始化为0)

3、rejister变量

通常变量的值存放在内存中,当对一个变量频繁读写时,需要反复访问内存储器,华为大梁的存取时间。为了提高效率,C++语言可以将变量声明为寄存器变量,这种变量将局部变量的值直接存放在cpu的寄存器中,使用时不用访问内存,而直接从寄存器中读写。寄存器变量的说明符号为 register。

  • 寄存器变量属于动态存储方式。凡是需要采用静态存方式的量不能定义为寄存器变量。
  • 编译程序会自动决定哪个变量使用寄存器存储。register起到程序优化的作用。

4、extern 变量

在一个源文件中定义的变量和函数只能被本文件中的函数调用,一个C++程序中会有许多源文件,如果使用非本源文件的全局变量呢?C++提供了extern关键字来解决这个问题。在使用其他源文件的全局变量时,只需要在本源文件中使用extern来生命变量。

编译系统不再为全局变量分配内存,而是改变非本源区全局变量的值

C++变量存储类别 | 判断是否是闰年 C++静态存储方式 在上一节小林讲过,作用域从空间的角度来分析的,分为全局变量和局部变量,在这一节中,小林带着你学习变量的另一种属性,变量在内存中的存在期间,也就是存储期。 存储期可以分为静态存储期和动态存储期,静态存储方式是指在程序运行期间,系统对变量分配固定的存储空间;动态存储方式则是在程序运行期间,系统对变量动态地分配存储空间。 内存中的供用户使用的存储空间可以分为三部分: 程序区 静态存储区 动态存储区 全局变量全部存放在静态存储区中,在程序开始执行时给全局变量分配存储单元,程序执行完毕就释放这些空 阅读详情

相关推荐

T分布和T检验的理解,Python代码实现T检验的计算

每天学习一点,每天进步一点。 声明:本人所有的原创,都是自己在学习过程中的记录点滴,不一定都是对的,肯定也会有一些错误的想法。所以大家看一看就好,不可尽信。当然也欢迎指出。 T分布 定义,有来自标准正态分布的样本X ~ N(0,1),和来自卡方n分布的Y ~ X2(n), 那么有 Z= X/√(Y/n) 成为符合自由度为n的T分布 我们用Python代码画一下他的图形 # 给一个自由度,返回这个自由度的卡方分布 X²(n) def product(n): n = np.ceil(n).astype

PY_smallH的博客 8465

C/C++数据在计算机内存中的存储形式详解

详细介绍了c/c++一些基础数据的内存存储形式

m0_74246469的博客 3049

用YOLO11-seg玩转裂缝分割:CBAM注意力魔改+轻量化GhostConv实战

本文详细解析了如利用YOLO11-seg进行裂缝分割任务,结合CBAM注意力机制和GhostConv轻量化改造,显著提升模型性能。通过实战案例展示从数据准备、模型训练到部署优化的全流程,特别针对小目标检测和复杂背景干扰等挑战提供解决方案,最终实现高效准确的裂缝检测系统。

j0k1l2m3n的博客 262

C++语言变量存储类别

1.1 概述 存储类别变量的属性之一。在我们定义一个变量时,其实是有前缀的,只是我们通常省略。C++语言有4中变量存储类别,分别是auto变量、static变量、register变量、extern变量。不同的变量存储方式会使变量的生存期不同,生存期表示了变量存在的时间。生存期和变量作用域是从时间和空间这两个不同的角度来描述变量的特性。在介绍4种变量之前,我们需要搞清楚动态变量和静态变量是什么...

A.pro的博客 2924

C语言存储类说明符--register

在C语言中,register是一个存储类说明符,它建议编译器将某个局部变量存储在寄存器中,而不是在RAM中,以提高对该变量的访问速度

MHD0815的博客 1031

关于static,const,register,auto的作用

1.auto的特点:现有如下的一个函数void some() { auto int b,c=3; }此时,当该函数被调用时,由系统动态地分配存储单元,执行完后,自动释放b,c所占的存储单元2.static的特点:①static定义的变量属于静态存储类别,在程序运行时由系统分,在整个运行区间都不释放。 ②静态局部变量在运行过程中只赋一次初值,而其他方式如在函数内部定义的自动变量,则是每调用一次函数

sinat_35042087的博客 448

C存储类型auto、static、extern、const、register、volatile。

static:静态局部变量 auto:自动存储变量 extern:外部变量

MrWangHao的博客 1768

C++语言中变量储存类别

在说明C++语言中变量存储类别之前,我们需要搞明白生存期和作用域两个概念。生存期和作用域是指从时间和空间两个角度去描述变量的特性。不同的变量存储类别直接导致了变量的生存期不同,通俗的说,也就是变量存在的时间不同。        静态存储变量一般在变量定义之初就为变量分配了固定的存储单元,这些存储单元直到程序结束的时候才会被释放,而它们一般是存放在静态存储区的,如全局变量等;动态存储变量只有在程

Ant's home 1587

C语言 · 储存类别,链接和储存

我为读者附上一张总结图,参考《C Primary Plus》函数体外部、函数定义之外定义的变量↩︎访问和处理这些变量比一般变量速度快↩︎例如使用指针即地址进行访问↩︎。

m0_71638711的博客 257

C++变量存储类别(动态存储、静态存储、自动变量、寄存器变量

C++变量存储类别(动态存储、静态存储、自动变量、寄存器变量 一、动态存储方式与静态存储方式 上一节已介绍了变量的一种属性——作用域,作用域是从空间的角度来分析的,分为全局变量和局部变量变量还有另一种属性——存储期(storage duration,也称生命期)。存储期是指变量在内存中的存在期间。这是从变量值存在的时间角度来分析的。存储期可以分为静态存储期(static sto

又被扼杀在萌芽 481

5种变量储存方式

储存描述 持续性 作用域 链接性 如声明 自动 自动 代码块 无(只能在声明的代码块里作用) 在代码块里 寄存器 自动 代码块 无 在代码块里 使用关键字register 静态,无链接性 静态 代码块 无 在代码块里 使用关键字static 静态,外部链接性 静态 文件 外部(可以在外部文件访问,外部文件需加关键字extern) 不在任函数内 静态,内部链接性 ...

少爷想养猫的博客 952

关于C++变量存储类别介绍

一般情况下,变量时存在内存中的,如果有一些变量使用频繁,如一个循环循环1000次,每次都要引用某个局部变量,这时,我们就可以声明一个寄存器变量,以加快运算速度。例如: Int a,b;其实这就是一个常量修饰符,相当于预定义#define,const的特点就是它的值是不能改变的,一旦定义,值就是固定的了。扩展作用域,如果找不到,就在连接时从其他文件中找到外部变量的定义,如果找到了就扩展到本文件的作用域,再找不到就报错。(2) 在编译遇到extern时,先在本文件中找到外部变量的定义,如果找到,就在本文中。

xinyuerr的博客 172

c语言中各种存储类别特点,C语言中变量存储类别

本文件介绍c++/c语言中的变量存储类别,在参照谭浩强的c语言教材的基础上,结合自己的c语言学习心得,希望能给在c语言中变量存储类别有疑问的人起到一点启示的作用。一.C语言中,从变量的作用域角度来分,可以分为全局变量和局部变量。二.变量值存在的时间角度来分,可以分为静态存储方式和动态存储方式。所谓静态存储方式是指在程序运行期间有系统分配固定的存储空间的方式。而动态存储方式则是在程序运行期间根据需...

weixin_35108433的博客 1438

C++学习之:变量存储类别

c++中,每个变量有两个属性:类型:变量存储的数据类型(如int、double、char);存储类型变量存储的区域(atuo、register、extern、static)变量的作用域决定了变量的有效范围。变量存储类别决定了变量的生存期限。在计算机中,内存被分成不同的区域。不同区域与不同的用途。按变量在计算机内的存储位置来分,变量分为:自动变量(atuo)、静态变量(static)、寄存...

Wu_qz的博客 683

C语言register关键字详解

C语言register关键字详解

嘻嘻爱编码的博客 4896

C++变量存储类型

C++变量和函数包括两个属性:数据类型和数据的存储类型存储类型是指数据在内存中存储的方式。变量存储类型分为四种:自动类型(auto),寄存器类型(register)、静态类型(static)外部类型(extern)其中,自动类型、寄存器类型的变量属于动态变量;静态类型、外部类型的变量属于静态变量。 1.自动类型(auto) 用自动类型关键词auto说明的变量称为自动变量。auto只能修饰局部...

CX的博客 1821

c语言变量储存类型

变量的存在时来看,分为静态存储方式和静态存储方式。 静态存储方式是指在程序运行开始时由系统分配固定的储存空间的方式。 而动态存储方式是指在程序运行期间根据需要进行动态的的分配储存空间的方式。 程序内存映像: 程序区 静态存储区 动态存储区 凡是在函数外声明的变量储存在静态存储区; 凡是在函数内前面没加static声明的变量,都储存在动态存储区。 在c语言中变量储存类型有以下四种: 1.auto变量:自动变量 (动态存储) 2.register 寄存器变量(动态存储...

wang1664178416的博客 1万+

详解 C语言 四种存储类型

C语言中一共有四种存储类型: 1.自动变量(auto) 在C语言中变量默认为auto变量,表示系统为自动变量分配内存,在函数体中声明则只能在当前函数体中使用,在main函数以及其他函数外声明即为全局变量,当退出函数体时,系统释放分配给自动变量的内存,此时变量值就会丢失.{int a;auto int a; } 其作用相同 2.静态变量(static) 3.外部变量(extern) 4.寄存器类型(...

weixin_44426035的博客 8993

c语言关键字_顿悟,神秘的register关键字(C语言篇)

1、唠唠嗑(听说文章与音乐更配) 今天文章开头为大家挑选一首非常经典的歌曲,估计喜爱《仙剑》的小伙伴听到这个音乐脑海中又会闪现一幕幕画面,大伙可以感受一下!今天手把手为大家解析一个C语言关键字register,可能这个关键字大家在平时的项目开发中用得并不是很多,大部分都是在书籍文档中了解到,估计部分小伙伴根本就没有敲过该关键字。哈哈,作者在之前的文章中一直提到一个"存在即合理"的观...

weixin_39993989的博客 561

Umvlx.zip_FAS_FAS反编译_autocad_fas反编译成_vlx 反编译

把AutoCAD的VLX文件反编译成FAS文件

上一篇: ubuntu14.04安装jdk1.8
下一篇: C++字符字符数组
smalltree_it
博客等级 码龄13年 9粉丝 122原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值