文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-30 12:27

关注

本篇内容主要讲解“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++各种变量及区别实例分析

在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++各种变量及区别实例分析”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯