C++编程笔记:全局与局部变量、栈区与堆区详解
需积分: 12 165 浏览量
更新于2024-06-29
收藏 2.88MB PDF 举报
本篇笔记是关于C++编程语言的基础知识,主要集中在内存管理和数据存储区域的讲解。首先,我们讨论了C++中的不同类型变量:全局变量、局部变量、静态变量以及常量。
1. 全局变量和局部变量:
全局变量(如`g_a`和`g_b`)在整个程序范围内有效,其存储位置在全局区。它们在程序启动时分配空间,并在程序结束时自动释放。局部变量(如`a`和`b`)则是在函数内部定义,生命周期与函数相同,其存储在栈区内,每次函数调用时都会为它们分配新的内存,结束后自动释放。
2. 静态变量:
静态变量(如`s_a`)与局部变量类似,但生命周期贯穿整个函数的执行过程,即使函数被多次调用,它们的值也会保持不变。`s_a`的地址可以通过`&(int)s_a`获取。
3. 字符串常量:
在C++中,字符串常量如"`helloworld`"被视为不可变对象,存储在常量池中,地址不能改变,且不占用栈空间。
4. 常量:
全局常量(如`c_g_a`)和局部常量(如`c_1_a`)在声明时就被初始化,它们的值在编译时就确定,存储位置可能与普通变量不同,但同样不会改变。
5. 地址运算:
通过`(int)&变量名`可以获取变量的内存地址,这对于理解变量的存储位置和作用域至关重要。例如,局部变量`a`和`b`的地址会随着函数调用而变化,而全局变量的地址在程序运行期间保持不变。
6. 栈区和堆区:
函数参数(如`func(int b)`中的`b`)和局部变量存储在栈区,而通过`new`操作动态分配的内存(如`new int(10)`)在堆区。栈区数据的生命周期短,释放方式由编译器自动处理;堆区数据手动管理,需确保正确释放以防止内存泄漏。
7. 引用:
引用(未在提供的代码片段中出现,但通常用于避免复制对象)是C++中的一种特殊指针,它提供对已有对象的别名,引用必须在声明时初始化,并且一旦引用某个对象,就不能再引用其他对象。
8. 动态内存分配和引用:
`func()`函数展示了如何使用`new`关键字在堆上动态分配内存,并返回指向该内存的指针。在`test01()`函数中,使用引用传递参数,这有助于避免不必要的复制。
总结来说,这部分笔记涵盖了C++中变量的生命周期、存储区域、常量特性、内存管理(栈与堆)以及引用的使用。这些都是编写高效和可维护的C++代码的基础知识点。
2023-08-12 上传
2023-11-20 上传
2013-01-20 上传
2021-01-20 上传
Jvvhh
- 粉丝: 0
- 资源: 2
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍