新唐N76E003指针指向错误问题

问题描述:如下代码,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空间

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值