程序员的修养 - 变量

本文详细探讨了变量在编程中的基本概念,包括其作为可变量、通过变量名操作、不同作用域(局部、全局和静态)、内存分配与存储区域,以及内存管理的重要性,特别提到了内存泄漏问题。
摘要由CSDN通过智能技术生成

变量几乎代码程序程序 中最基础的组成单元,程序员几乎无时无刻都在接触变量。但你对变量的理解真的足够吗?

首先,什么是变量?!

第一层理解一个可以改变的量,区别于常量,用户可以修改它的值,当然更可以读取它的值。

变量是有类型变量名所定义的,比如 int a = 0;  std::string msg = "Hello World!";

类型包括:整型变量(int),浮点型变量float,字符型变量char ,字符串string等等,这些变量通常是用户(程序员)自己定义和操纵的。变量类型,让计算机和用户知道该变量持有什么类型的东西,计算机会更加变量类型分配适当的内存。

第二层理解:我们操作变量是通过变量名,那么变量名本质上是什么?比如 int num = 10; 我们通过num来读写该变量,要知道当我们定义一个变量时,计算机会自动分配一块内存用来存储该变量。而变量名就相当于这块内存区域的别名(引用),通过这个别名我们可以直接读写该区域。

比如刚才的例子,int num = 10; 计算机会在内存分配一个4字节大小的区域,并在该区域填上数字10。我们通过num可以直接得到数字10,也可通过num = 666直接把该区域的值改为666。

第三层理解:变量定义在不同的位置,就会有不同的作用域。定义在函数内,是局部变量,只在函数内有效。定义在函数外,就是外部或全局变量,从定义处到文件结尾全局有效。当然还有静态变量,通过static关键字声明的(又分为静态全局变量:只在文件范围内可见。静态局部变量:只在第一次调用时初始化)

第四层理解:计算机的存储分为硬盘、内存、高速缓存、寄存器等。我们接触最多的是硬盘和内存。内存是易失性存储区,即断电会清空内存所有内容。硬盘是可持久化存储的大家都清楚。当程序运行时,会把代码和数据加载到内存,并根据需要动态在内存创建数据。

所以内存分为多个区域,分别用于存储不同类型的东西。常见的分类有:全局存储区,线程栈、堆等。系统会根据变量类型,为它分配不同的存储区域。比如全局变量,静态变量都存放在全局变量区,它们会在程序启动时创建和分配内存,在程序结束时销毁。 而局部变量,函数参数这些会在线程栈上分配内存,它们是在函数调用时创建和分配,退出函数时销毁。另外还有程序员动态申请的内存变量,比如通过new malloc等,会在堆上分配内存,这块空间通常需要程序员手动释放,否则会造成内存泄漏等异常。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值