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释放堆区数据,注意数组释放的规则;

相关推荐
星夜离尘561 小时前
MATLAB 工程实验:不等间隔流量积分,先把缺口与覆盖率说清楚
开发语言·matlab·时间戳·数据质量·数值积分
Ai-_Man1 小时前
Meta Muse还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·c#·1024程序员节
梓豪csd1 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
会编程的小孩2 小时前
C++ qt的安装
c++
学逆向的2 小时前
C 枚举变量
c语言·开发语言·网络安全
宝绿特塑业再生科技2 小时前
改性HDPE再生颗粒在户外家具挤出发泡板材中的色差控制与高品质价值重构
经验分享·科技·学习·生活·1024程序员节·户外家具
Sakura_j_h_2 小时前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
冷凝雨2 小时前
前导零、后导零、最高有效位、最低有效位计算(C)
c语言
鸥梨菌Honevid3 小时前
C 语言 restrict 关键字深度解析:从“独占访问”承诺到编译器激进优化
c语言
andrsted4 小时前
练题簿在线免费刷题:让整理过的资料,变成能反复练习的题库
学习·微信小程序·小程序·学习方法·刷题·1024程序员节