Keil C语言数据类型,KeilC的指针类型
发布日期:2022-02-18 13:08:16 浏览次数:8 分类:技术文章

本文共 935 字,大约阅读时间需要 3 分钟。

话说,C语言中最精髓的就是指针的操作了。当然,本文不对C语言的指针做详细的描述。Hanny在这里只想小结一下KeilC中的指针类型。

在KeilC中,我们会常见到下述的指针定义方式:

char *ptr1;

char code *ptr2;

char data *ptr3;

char xdata *ptr4;

char *data ptr5;

char code *data ptr6;

char data *data ptr7;

char xdata *data ptr8;

char *xdata ptr9;

char code *xdata ptr10;

char data *xdata ptr11;

char xdata *xdata ptr12;

看到这里,可能会有人有点乱了吧。其实要理清上面这一堆东西很简单。

首先,我们需要了解51的内存结构。简单地说,就是51包括data/idata、xdata、code三大块。定义指针时,*后面的修饰符是用来表示指针的存储位置。如:ptr5、ptr6、ptr7、ptr8存储在data区中,ptr9、ptr10、ptr11、ptr12存储在xdata中。ptr1、ptr2、ptr3、ptr4的存储位置则取决于KeilC中的设置(使用内存的模式)。

*之前的修饰符,则是用来表示指针所指向的数据的存储位置,即指针类型。ptr2、ptr6、ptr10的指针,指向一个存储在code中的数据。ptr3、ptr7、ptr11的指针,指向一个存储在data中的数据。ptr4、ptr8、ptr12的指针,指向一个存储在xdata中的数据。

ptr1、ptr5、ptr9这三个指针有一点点特殊。没有修饰类型这表示这是一个通用指针,它将用3Byte来表示。其中第一字节表示指针类型,后两个指针存放指针地址。而类型中,0xff表示指针存放在code中,0x00表示data/idata,0x01表示xdata。

综上所述,若一个指针为char xdata * xdata,如ptr12,则该指针表示一个存放在xdata中的指针,并且该指针指向一个xdata的数据。

在使用过程中,只要注意到了这些类型,应该是不会出什么问题的。

转载地址:https://blog.csdn.net/weixin_28871097/article/details/117272693 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:专科电子信息工程不学c语言,高中数学物理都不是很好 想报电子信息工程专业(专科)能行么?...
下一篇:linux网线连不上网络,【linux】台式机连接网线ubuntu1404无法上网解决方法

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月23日 05时31分24秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章