code区变量存储地址、全局变量存储地址问题

本文探讨了C/C++中code区变量和全局变量的存储地址分配规则。局部变量按照声明顺序在栈中分配,内存从高地址向低地址递减。全局变量在数据区的initialized或uninitialized部分,初始化与否影响其存储位置。初始化全局变量在扫描代码时立即分配,未初始化的全局变量在所有代码扫描后按字母顺序分配。不同源文件间的全局变量初始化顺序无保障。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

code区定义的数据,会按照先定义先分配地址,递增的方式存储。
这样用指针访问数组时候,地址依次递增就可以。

全局变量定义数据,
全局变量(堆上)递增存储,局部变量(栈中)递减存储??

这篇文章写得可以
原文C\C++编译器关于变量的内存分配顺序总结
转载C++中局部和全局变量的地址分配

知识储备:
1. 内存的分区:代码区,数据区,堆,栈。 四个区域司职不同,相互配合。
2. 变量的分类以及初始化情况:局部变量,全局变量,静态的,非静态的。C++里面又包括成员变量。

结论1:在局部变量分配空间的顺序跟变量的声明顺序直接相关,同时按照内存由高到低的顺序进行空间分配。

猜测一: 全局变量的显示初始为0与默认初始化为0效果一致,并不会导致内存分配地址出现不同,这时候遵循的规则是按章全局变量命名的字母顺序(单个字母)分配空间。
但是这时候要是有个有个变量初始化为0,结果就不按字母顺序进行递增分配了,而是按照声明顺序进行。
如果全局变量的命名是多字母,或者数组中数值是宏并不是数字(若MAX = 4,那么a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值