C51架构单片机指针内存解读

本文详细探讨了51单片机中指针的内存结构,指针作为变量在RAM或data区分配空间,由3字节组成,分别表示区域类型和起始地址。通过实例分析了不同类型指针指向不同存储区域的情况,如code区、data区和外部数据存储区(xdata)。
摘要由CSDN通过智能技术生成

指针是C语言的灵魂,更是控制单片机的利器,今天,一起来看一下指针的真面目;
1.指针也是变量:
时刻记住,指针也是变量类型的一种,和 int char float一样,创建指针后,会在内存空间(RAM或data区)中分配空间。对于51架构的单片机,指针占3字节空间。
2.指针内部结构详解:
上文说到,指针占3字节空间;那么具体为:第一字节表示区域类型,第二、三字节表示实际的起始地址。下面举例说明;
定义 char* string1={“012345\n”};
通过查看.M文件,D:0014H PUBLIC string1。可以看出,string1这个指针变量被定义为char型的指针,编译器为其分配的内存起始地址为 0x0014。接下来,我们直接定位到该地址
在这里插入图片描述
可以看到,0x14处的3个字节数值分别为,0xff,0x06,0xff.其中第一字节表示所在区域,本例中 ,{“012345/n”}被定义在CODE段中(代码区),所以0xff表示code区。2、3字节为2个字节16进制数0x06ff,表示我们定义字符串的起始地址,定位到该处在这里插入图片描述
可以看到 在Code区,0x06ff开始的8个字节中&#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值