[技术问答] N76E003指针

[复制链接]
1428|2
 楼主| tabmone 发表于 2024-7-26 08:44 | 显示全部楼层 |阅读模式
问题描述:如下代码,p指向的数据并不是28

char data *p;
char xdata  dat = 28;
p = &dat;

解决方案1:

char data *p;
char data  dat = 28;
p = &dat;

解决方案2:

char *data p;
char xdata  dat = 28;
p = &dat;

知识点:
C51的指针类型分为2类,1:一般指针;2基于寄存器的指针。

如下表示一般指针:

char *xdata my_char;   //指针本身存储在xdata空间,它指向char类型
int *data my_num;   //指针本身存储在data空间,它指向int类型

一般指针代码运行较慢。但兼容性强

如下表示基于寄存器的指针:

char xdata *my_char;   //针本指向的char型数据存储在xdata空间
int data *my_num;   //针本指向的int型数据存储在data空间

基于寄存器的指针运行速度快,但是他所指向的对象有确定的存储空间,从而导致其代码的兼容性不好。


xuanhuanzi 发表于 2024-7-26 09:30 | 显示全部楼层
data   xdata关键字是51特有的吧
班杰明 发表于 2024-8-12 23:53 来自手机 | 显示全部楼层
arm的有没有类似关键字啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

1720

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部