首页 > 其他分享 >我的第一篇随笔

我的第一篇随笔

时间:2022-12-23 21:11:07浏览次数:33  
标签:10 常量 第一篇 C++ int 存放 全局 随笔

C++核心编程

本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓。

1 内存分区模型

C++程序在执行时,将内存大方向划分为4个区域

  • 代码区:存放函数体的二进制代码,由操作系统进行管理的
  • 全局区:存放全局变量和静态变量以及常量
  • 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等
  • 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收

内存四区意义:

不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程

1.1 程序运行前

​ 在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域

代码区:

​ 存放 CPU 执行的机器指令

​ 代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可

​ 代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令

全局区:

​ 全局变量和静态变量存放在此.

​ 全局区还包含了常量区, 字符串常量和其他常量也存放在此.

该区域的数据在程序结束后由操作系统释放.

示例:

//全局变量
int g_a = 10;
int g_b = 10;

//全局常量
const int c_g_a = 10;
const int c_g_b = 10;

int main() {

	//局部变量
	int a = 10;
	int b = 10;

	//打印地址
	cout << "局部变量a地址为: " << (int)&a << endl;
	cout << "局部变量b地址为: " << (int)&b << endl;

	cout << "全局变量g_a地址为: " <<  (int)&g_a << endl;
	cout << "全局变量g_b地址为: " <<  (int)&g_b << endl;

	//静态变量
	static int s_a = 10;
	static int s_b = 10;

	cout << "静态变量s_a地址为: " << (int)&s_a << endl;
	cout << "静态变量s_b地址为: " << (int)&s_b << endl;

	cout << "字符串常量地址为: " << (int)&"hello world" << endl;
	cout << "字符串常量地址为: " << (int)&"hello world1" << endl;

	cout << "全局常量c_g_a地址为: " << (int)&c_g_a << endl;
	cout << "全局常量c_g_b地址为: " << (int)&c_g_b << endl;

	const int c_l_a = 10;
	const int c_l_b = 10;
	cout << "局部常量c_l_a地址为: " << (int)&c_l_a << endl;
	cout << "局部常量c_l_b地址为: " << (int)&c_l_b << endl;

	system("pause");

	return 0;
}

打印结果:

1545017602518

总结:

  • C++中在程序运行前分为全局区和代码区
  • 代码区特点是共享和只读
  • 全局区中存放全局变量、静态变量、常量
  • 常量区中存放 const修饰的全局常量 和 字符串常量

标签:10,常量,第一篇,C++,int,存放,全局,随笔
From: https://www.cnblogs.com/topcoderblog/p/17001647.html

相关文章

  • c++随笔测试(Corner of cpp)
    在c++17下,程序的输出是什么?(有可能编译出错,有可能输出未知,有可能是未定义行为)点击查看代码#include<iostream>voidfoo(unsignedint){std::cout<<"uint";}voidfo......
  • 《VR 游戏:未来充满无限可能》读后随笔
    随着元宇宙概念的火爆,VR作为虚拟世界和现实世界连接的桥梁,VR游戏成为了元宇宙的重要载体。从这篇文献中可以得知,越来越多的资源开始涌入VR这条赛道。11月2日,索尼宣布......
  • 《基于 Unity3D 的虚拟现实游戏设计与实现 ——以<VR 动物园>项目为例》读后随笔
    随着虚拟现实技术和游戏行业的融合发展,具有更强沉浸感、交互性和娱乐性的VR游戏也获得了充足的发展空间,但是作为高技能人才培养的高职院校却与VR行业新技术的发展渐行......
  • 每日随笔更新小的细节技术
    centos如果有的repo失效,每次安装或者更新都会报错  首先执行yumrepolist,查看当前已经安装的repo及ID  如果要去除某一个repoid更新的话,可以执行如下命令:yum......
  • 读书之《程序员修炼之道:从小工到专家》十二月第一篇
    设计文档里的圆圈和箭头用来解释他们指代的作用,但这还有可能是推翻我们原先设定的证据。感觉这个是承接上一节的内容,不要被以前的假设和设计所限制,留有一定的弹性空间。我......
  • GUI随笔
    ####GUI是一个很大的话题,从Win32(windows基础API编程)到MFC,QT再到DuiLib,WPF,Winform再到Html这是一个很漫长的路,下面是我对这个界面库的见解就对我而言,或者说目测软件开发,......
  • MarkDown使用相关随笔
    1.标题Maekdown里面的标题有多级标题,构造标题的方法为#*n+空格+标题名,其中n的数值即#号的数量代表几级标题例如:如果是##+空格+苹果,那么就会生成名字为苹果的二级标题......
  • 研究计划书:思路随笔
    RPidea当时出愿的时候研究计划书的随笔,当时没有接触过AL+labelannotation,只知道AL,然后下意识把俩个领域联系起来了,没想到这两个领域联系已经有好几年成熟的研究体系了X......
  • 随笔
    今天是2017年12月2日,星期六,我用来一下午的时间把自己的导航改名为山理人导航,把所有的影视资源都整合了一下,也算是娱乐了一下,接下来的时间可能不太经常写博客了,要专心......
  • es6模块化随笔记
    默认导出与默认导入默认导出的语法:exportdefault默认导出的成员每个模块中只允许使用唯一的一次exportdefault默认导入的语法:import接收名称from‘模块标识符’......