打印
[技术问答]

N76E003指针

[复制链接]
916|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的有没有类似关键字啊?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

1275

帖子

0

粉丝