摘要:只读目的是防止程序意外地修改了它的指令。全局区存放全局变量静态变量和常量除了修饰的局部变量。程序结束时由操作系统释放。由编译器自动分配和释放。注意不要返回局部变量的地址。
C++程序在执行时,将内存大致分为4个区域:代码区,全局区,栈区,堆区
?特点:①共享 :对于频繁被执行的程序,只需要在内存中有一份代码即可。
②只读:目的是防止程序意外地修改了它的指令。
//全局变量int g_a = 10;const int c_g_a = 10;int main(){ int l_a = 10; //静态变量 static int s_a = 10; //常量:字符串常量/const修饰的变量(全局/局部变量) const char* a = "hello"; const int c_l_a = 10; cout << "局部变量l_a的十进制地址为:" << (int)&l_a << endl; cout << "全局变量g_a的十进制地址为:" << (int)&g_a << endl; cout << "静态变量s_a的十进制地址为:" << (int)&s_a << endl; cout << "字符串常量a的十进制地址为:" << (int)a << endl; cout << "const修饰的全局变量c_g_a的十进制地址为:" << (int)&c_g_a << endl; cout << "const修饰的局部变量c_l_a的十进制地址为:" << (int)&c_l_a << endl; return 0;}
?注意:不要返回局部变量的地址。
int* funcation(){ int a = 10;//存放在栈区,栈区的数据在函数执行完后自动释放 return &a;}int main(){ int* p = funcation(); cout <<"局部变量a的值为:"<< *p << endl; //第一次正常打印,因为编译器做了保留 cout << "局部变量a的值为:" << *p << endl; return 0;}
new
)和释放(delete
),若程序员不释放,程序结束时由操作系统回收。int* funcation(){ //new关键字,可以将数据开辟到堆区上 //指针本质上也是局部变量,存放在栈区上,但是保存的数据在堆区 int* p = new int(10); return p;}int main(){ int* p = funcation(); cout << *p << endl; cout << *p << endl; return 0;}
Tip:
- 程序运行前分为:代码区,全局区
- 程序运行后分为:栈区,堆区
[注]: 关于内存更详细的知识?深度剖析数据在内存中的存储?几分钟让你了解什么是函数栈帧的创建和销毁
//new的基本用法int* p = new int(10);//在堆区创建整型变量,返回该变量的地址delete p;//释放int* parr = new int[10];//在堆区创建一个元素为10的整型数组,返回数组首元素的地址delete[] arr;//释放一个数组
测试delete
int* funcation(){ int* p = new int(10); return p;}int main(){ int* p = funcation(); cout << *p << endl; cout << *p << endl; delete p; cout << *p << endl; return 0;}
作用:给变量起个别名。
语法:数据类型
&
别名
=原名
//eg.int a = 10;int& b = a;
注意:
①引用必须初始化。
②引用一旦初始化就不可以更改了。
//①引用必须初始化 int a = 10; int& b;//错了!!! //②引用一旦初始化就不可以更改了 int a = 10; int c = 20; int& b = a; int& b = c; //错了!!!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/120963.html
摘要:文章目录模板模板的概念函数模板函数模板语法函数模板注意事项函数模板案例普通函数与函数模板的区别普通函数与函数模板的调用规则模板的局限性类模板类模板语法类模板与函数模板区别类模板中成员函数创建时机类模板对象做函数参数类模 ...
摘要:持续更新多年的编程语言排行榜,迎来了一个历史性时刻第一次拥有一个新的领导者编程语言。黑马程序员推出课程体系,除了个月的大纲课程学习以外,同时提供个月课程内容的在线学习提供给毕业之后进入工作岗位的学员继续学习。 ...
摘要:学习完多线程之后可以通过下面这些问题检测自己是否掌握,下面这些问题的答案以及常见多线程知识点的总结在这里。可选数据结构与算法如果你想进入大厂的话,我推荐你在学习完基础或者多线程之后,就开始每天抽出一点时间来学习算法和数据结构。 我自己总结的Java学习的系统知识点以及面试问题,已经开源,目前已经 35k+ Star。会一直完善下去,欢迎建议和指导,同时也欢迎Star: https://...
摘要:下面列举了游戏开发中常见的岗位以及两条常见的协作开发的流水线其实学习游戏引擎,前期对于任何岗位来说路线都是相似的,基本上就是一个熟悉基本操作理解基本概念拓展专业知识的过程。当然这不是绝对的,任何引擎的开始阶段和大成阶段都是相似的。 这是【游戏开发那些事】第51篇原创 前言:游戏引擎,表面...
阅读 3356·2023-04-25 22:04
阅读 2170·2021-11-22 15:29
阅读 2096·2021-10-11 10:57
阅读 1363·2021-09-24 09:48
阅读 3128·2021-09-09 09:34
阅读 2518·2021-09-02 15:21
阅读 2368·2019-08-30 15:53
阅读 1067·2019-08-30 14:07