C++回顾(基础)(01)

(第一篇)

目录

前言

1.内存分区模型

1.1程序运行前

1.2程序运行后

1.3new操作符


前言

学习完C语言基础后,可以进入C++的学习了。

C语言和C++的语法有互通之处,C语言就是C++的基础,但是C++相对于C语言又多加了许多内容。所以,对于C++的学习,也必须细致,以便将来做项目的时候可以做到不仅仅是看懂代码,还有知道为什么使用这串代码,以及能不能使用其他的代码实现更好的效果;

1.内存分区模型

1.1程序运行前

代码如下:

(a)在main函数之外创建的变量为全局变量,存入全局区;

(b)我们可以将局部变量,全局变量,静态变量的地址打印出来,地址接近的在同一个区域;

(c)另外还有const修饰的全局变量和常量:

(d)以及字符串常量,全局变量,局部常量等等,可以一一验证;

输出地址如下:

(e)可以画出以下图:

1.2程序运行后

代码如下:

(a)由于在函数中创建变量为局部变量,在栈区存放,当函数执行完毕后就会自动释放,所以尽管传出了局部变量的指针,也会定位不到对应的变量,成为野指针;

(b)如果对局部变量指针进行返回,第一次可能能使用这个变量,因为编译器保留了这个变量,但是下次就会无法找到,出现越界访问的问题;

(c)有关new操作符马上讲到;

1.3new操作符

代码如下:

(a)尽管在函数创建数据,返回指向这个数据的指针,但是由于加上了new操作符,数据在堆区创建,就不会马上释放,所以可以多次打印;

同理,也可以用new开辟数组:

(b)使用new后记得使用delete释放堆区数据,注意数组释放的规则;

相关推荐
承渊政道7 小时前
【Python编程—从入门到实践】(记分与闯关:用Python+Pygame,打造越战越精彩的太空大战!)
开发语言·python·pycharm·游戏程序·pygame
爱学习的程序媛7 小时前
Python常用框架梳理
开发语言·后端·python·ai·web·后端框架·python框架
Rabitebla7 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
Gary移动存储固件8 小时前
eMMC5.1协议中文学习讲解(6.6.17~6.6.22.4.6)
学习·ufs·emmc·nand·存储固件
一个天蝎座 白勺 程序猿8 小时前
别让收藏夹替你学习:我搭AI知识体系的完整方法,脚本直接拿去用
人工智能·学习·ai·ai学习
eggwyw8 小时前
Anaconda安装卸载的详细流程指南
开发语言·python
楚山之石9 小时前
【Nat Biomed Eng】Connectome 2.0 超高梯度扫描仪:500 mT/m 与 600 T/m/s 把活体人脑微观结构分辨推进到亚微米级
图像处理·学习·数据分析·mri
坤坤子吖11 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
码客-ygluu13 小时前
一个通用游戏数据服务器
c++·架构
another heaven13 小时前
【C/C++ Ranges 是零开销抽象吗?拆开管道、惰性求值和编译期膨胀】
c语言·开发语言·c++