iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++各种变量及区别实例分析
  • 875
分享到

C++各种变量及区别实例分析

2023-06-30 12:06:18 875人浏览 八月长安
摘要

本篇内容主要讲解“c++各种变量及区别实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++各种变量及区别实例分析”吧!在日常开发中,我们经常使用变量,常量,像下面的代码:int 

本篇内容主要讲解“c++各种变量及区别实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++各种变量及区别实例分析”吧!

在日常开发中,我们经常使用变量,常量,像下面的代码:

int ser_1;             // 全局变量const int ser_2;       // 全局常量static int ser_3;      // 静态变量void main(){  int serven_1;             // 局部变量  const int serven_2;       // 局部常量  static int serven_3;      // 局部静态变量  func(serven_1);}void func(int para){      // 形参  int a;}

上面的一小段代码涵盖了变量、常量和静态变量,并且均定义了全局和局部。这些是我们经常使用到的定义变量的方式,但是你知道它们的区别吗?它们的作用域又是什么?它们的在内存中又是怎么样存放的?

一、分类

变量可以分为:全局变量、局部变量、静态全局变量、静态局部变量;

在C++的内存管理机制中,全局变量、静态全局变量和静态局部变量均存放在静态存储区域,局部变量存放在栈中,全局变量和静态变量如果在定义的时候没有初始化,那么编译器会将这些变量初始化为0。

二、作用域

作用域表示一个变量在使用过程中的范围,也就是在某个范围内,变量可以正常使用,出了这个范围,变量就失效了。

局部变量的作用域:局部变量的作用域在于函数体内部,出了函数的范围就是用不了了,像上述代码中的serven_1变量,只能在main函数中使用,出了main函数就使用不了。形参变量属于被调函数的局部变量,实参属于主调函数的局部变量。不同的函数可以使用一模一样的符号来定义变量,虽然符号一样,但是它们实际上是不相同的。像下面的代码,两个函数的符号serven_1都不一样,一个是int类型,一个是char类型。

void func_1(){  int serven_1 = 2;}void func_2(){  char serven_1 = 's';}

全局变量的作用域:全局变量的作用域不属于某一个函数,它属于一个源程序文件,作用域是整个源程序,当需要在某个函数里面使用全局变量时,需要做声明,一般使用extern来做声明。当然啦,在同一个文件中就不需要做extern声明。全局变量和局部变量可以用相同的符号来定义,在定义局部变量的函数体中,如果使用了该符号则认为是局部变量,像下面的代码中,在函数func中使用serven_1时用的是局部变量。

int serven_1;        // 全局变量,未初始化时则编译器默认其为0void func(){  int serven_1 = 3;  std::cout<<serven_1<<std::endl;        // 这里打印的是3}

三、存储区域

在C++的内存管理机制中,将整个存储区分为以下几块地方:代码区域(CODE)、常量区域(TEXT)、BSS区域、DATA区域、堆(HEAP)、栈(STACK)。

C++各种变量及区别实例分析

  • 栈(STACK):由编译器进行管理,自动分配和释放,存放函数调用过程中的各种参数、局部变量、返回值以及函数返回地址。操作方式类似数据结构中的栈。

  • 堆(HEAP):用于程序动态申请分配和释放空间。C语言中的malloc和free,C++中的new和delete均是在堆中进行的。正常情况下,程序员申请的空间在使用结束后应该释放,若程序员没有释放空间,则程序结束时系统自动回收。注意:这里的“堆”并不是数据结构中的“堆”。

  • 全局(静态)存储区:分为DATA段和BSS段。DATA段(全局初始化区)存放初始化的全局变量和静态变量;BSS段(全局未初始化区)存放未初始化的全局变量和静态变量。程序运行结束时自动释放。其中BBS段在程序执行之前会被系统自动清0,所以未初始化的全局变量和静态变量在程序执行之前已经为0。

  • 文字常量区(TEXT):存放常量字符串。程序结束后由系统释放。

  • 程序代码区(CODE):存放程序的二进制代码。

C/C++中,定义全局变量和局部变量时。全局变量(外部变量和静态变量),均是保存在全局存储区中,占用永久性的存储单元;局部变量(自动变量),保存在栈中,只有在所在函数被调用时才由系统动态在栈中分配临时性的存储单元。

变量存储区域分为动态存储区,静态存储区,寄存器存储区;其中寄存器存储也属于动态分配。
静态存储变量通常是在变量定义时就分配存储单元并一直保持不变, 直至整个程序结束;动态存储变量是在程序执行过程中,使用它时才分配存储单元, 使用完毕立即释放。

在C/C++语言中,对变量的存储类型说明有以下四种:
auto:自动变量
reGISter:寄存器变量(存储在CPU寄存器中,寄存器运算速度远高于内存)
extern:外部变量
static:静态变量

 自动变量和寄存器变量属于动态存储方式, 外部变量和静态变量属于静态存储方式。在介绍了变量的存储类型之后,可以知道对一个变量的说明不仅应说明其数据类型,还应说明其存储类型。因此变量说明的完整形式应为:

存储类型说明符 数据类型说明符 变量名,变量名&hellip;;

例如:

static int ser_1,ser_2;     // 说明ser_1,ser_2为静态类型变量auto char ser_3,ser_4;      // 说明ser_3,ser_4为自动字符变量static int ser_5[5]={1,1,1};  // 说明ser_5为静整型数组extern int ser_6, ser_7;     // 说明ser_6, ser_7为外部整型变量。

自动型变量存放在堆栈区中。堆栈区也是内存中一部分,该部分内存在程序运行中是重复使用的。堆区域一般是程序员我们自己来申请和释放的,像malloc申请内存;栈区域是编译器自动来管理的,像调用函数的形参变量和局部变量。

到此,相信大家对“C++各种变量及区别实例分析”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: C++各种变量及区别实例分析

本文链接: https://www.lsjlt.com/news/328742.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++各种变量及区别实例分析
    本篇内容主要讲解“C++各种变量及区别实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++各种变量及区别实例分析”吧!在日常开发中,我们经常使用变量,常量,像下面的代码:int ...
    99+
    2023-06-30
  • 解析C++各种变量及区别
    目录一、分类二、作用域三、存储区域四、总结在日常开发中,我们经常使用变量,常量,像下面的代码: int ser_1; // 全局变量 const int se...
    99+
    2024-04-02
  • C#中变量初始化实例分析
    本文小编为大家详细介绍“C#中变量初始化实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#中变量初始化实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。请看下面的实例,使用了各种类型的变量:name...
    99+
    2023-06-17
  • C语言全局变量实例分析
    本篇内容主要讲解“C语言全局变量实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言全局变量实例分析”吧!我们知道,全局变量是C语言语法和语义中一个很重要的知识点,首先它的存在意义需要从...
    99+
    2023-06-30
  • JavaScript变量实例分析
    本篇内容主要讲解“JavaScript变量实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript变量实例分析”吧!   &nbs...
    99+
    2024-04-02
  • Python中类变量和实例变量的区别
    目录一、前言二、解决过程三、总结一、前言 有人提问了一个关于Python类变量和实例变量的问题,这里拿出来给大家分享下,一起学习。 是用英文提问的,当然了英文看上去也不难,有点二级...
    99+
    2024-04-02
  • C语言中各类变量和零值比较的示例分析
    这篇文章给大家分享的是有关C语言中各类变量和零值比较的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.波尔变量和零值比较在C语言中本来是不存在bool类型的,但在C99标准中加入了bool类型。在C99...
    99+
    2023-06-21
  • JavaScript变量和变换实例分析
    本篇内容主要讲解“JavaScript变量和变换实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript变量和变换实例分析”吧!1.声明使用变量之前务必通过关键字var进行声明...
    99+
    2023-06-30
  • Go中变量命名规则及实例分析
    这篇文章主要为大家分析了Go中变量命名规则及实例分析的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Go中变量命名规则及实例分析”的知识吧。命名习惯很重要良好...
    99+
    2023-06-26
  • C语言函数封装及变量的作用域实例分析
    这篇“C语言函数封装及变量的作用域实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言函数封装及变量的作用域实例分析...
    99+
    2023-06-30
  • C++类的静态成员变量实例分析
    本文小编为大家详细介绍“C++类的静态成员变量实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++类的静态成员变量实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、成员变量的回顾通过对象名能够访...
    99+
    2023-06-30
  • python类变量和实例变量的实例对比分析
    本篇内容主要讲解“python类变量和实例变量的实例对比分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python类变量和实例变量的实例对比分析”吧!区别类变量是所有对象共有的,其中一个对象...
    99+
    2023-06-30
  • Java各种运算符应用实例分析
    这篇“Java各种运算符应用实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java各种运算符应用实例分析”文章吧。一...
    99+
    2023-06-30
  • python中类变量和实例变量有什么区别
    这篇文章给大家介绍python中类变量和实例变量有什么区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、...
    99+
    2023-06-14
  • C#类型和C#变量的示例分析
    这篇文章主要介绍C#类型和C#变量的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!C#类型有两种:值类型(value type)和引用类型(reference type)。值类型变量直接包括它们的数据,而引用...
    99+
    2023-06-17
  • JavaScript局部变量实例分析
    本篇内容介绍了“ JavaScript局部变量实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! &...
    99+
    2024-04-02
  • JavaScript变量使用实例分析
    这篇文章主要讲解了“JavaScript变量使用实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript变量使用实例分析”吧! &nbs...
    99+
    2024-04-02
  • C++静态持续变量举例分析
    本篇内容介绍了“C++静态持续变量举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、auto关键字我们现在知道,使用auto关键字可...
    99+
    2023-06-21
  • Java线程优先级变量及功能实例分析
    这篇文章主要介绍“Java线程优先级变量及功能实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java线程优先级变量及功能实例分析”文章能帮助大家解决问题。前言:线程被称为“最小的处理单元”,...
    99+
    2023-07-02
  • JavaScript变量类型以及变量作用域的示例分析
    这篇文章主要介绍JavaScript变量类型以及变量作用域的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!变量类型ECMAScript变量可能包含两种不同类型的数据值:基本类...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作