话说,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的数据。

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

Keil C语言数据类型,KeilC的指针类型相关推荐

  1. c语言 void**类型转换,void指针类型强制转换

    如何将一个void*强制转换成行指针类型? void*指针可以转换成任何类型的指针. 强制转换即可,比如 (int *)(void *)p; 假设你的数组有N行M列的int型数据. int arr[N ...

  2. C语言_地址与指针类型不兼容造成的影响

    地址与指针类型不兼容造成的影响 最近在复习C语言的语法,复习到指针的时候,看到自己的笔记写着"指针类型要与地址兼容",换句话说就是"指针类型和所指数据的类型要一致&quo ...

  3. c语言的数据类型可分为4种,C语言数据类型中的基本类型

    变量的数据类型 在应用程序中,由于数据存储时所需要的容量各不相同,因此,为了区分不同的数据,需要将数据划分为不同的数据类型.C语言中的数据类型有很多种,具体分类如下图所示. 从图中可以看出,C语言中的 ...

  4. c语言来自不兼容指针类型的分配,c - 为什么我会收到“警告:来自不兼容指针类型的分配”? 结构数组中的双链表 - 堆栈内存溢出...

    我正在尝试实现连接到数组的双链表的实现. 构成数组的结构包含列表的Head和Tail指针. typedef struct myStruct{ int code; struct myStruct *He ...

  5. keil c语言范例,KeilC实例代码.doc

    KeilC实例代码 第三章 例3-1 #include //预处理命令 void main(void) //主函数名 { unsigned int a; //定义变量a 为unsigned int 类 ...

  6. c语言中指针的类型,学习C语言中的指针类型

    摘要:结合我院学生十年来参加全国计算机等级考试(C语言部分)情况,通过分析成绩分布与题型关系,我们发现指针方面的题型失分率最高.在此基础上结合教学实际,本文提出学习指针知识的方法和顺序过程,并将其应用 ...

  7. C语言数据类型和存储

    1.C语言中,类型的基本归类 1)基本数据类型 2)构造数据类型 3)指针类型 4)空类型四大类 类型的意义: 1)使用这个类型开辟内存空间的大小(大小决定了使用范围). 2)类型决定了如何看待内存空 ...

  8. 【C语言】深入浅出理解指针及内存与指针的关系(详细讲解+代码展示)

    目录 概述 内存 内存含义 内存作用: 物理存储器和存储地址空间 物理存储器:实际存在的具体存储器芯片. 存储地址空间:对存储器编码的范围. 内存地址 指针和指针变量 指针基础知识 指针变量的定义和使 ...

  9. C语言数据类型——基本类型,构造类型,枚举类型,指针类型

    目录 一.基本类型 1.1.整型int 1.2.实型(浮点型) 1.3.字符型char 二.构造类型 2.1.数组类型[] 2.1.1.字符数组 2.1.2.一维数组 2.1.3.二维数组 2.1.4 ...

最新文章

  1. IntelliJ IDEA2016.2 Eclipse(mac os x)常用推荐捷键手册
  2. 算法竞赛入门第二版解题报告
  3. Linux出现NOKEY
  4. [RMAN]数据文件的恢复
  5. matlab flightgear,matlab与flightGear联合仿真
  6. ubuntu下rabbitvcs安装后无右键菜单解决办法
  7. ios android 逆向 对比,iOS逆向开发--APP重签名
  8. Android的界面1080,安卓1080P界面设计规范解读
  9. 一些相似单词的区别之处
  10. 程序员什么时候适合创业呢?
  11. Vue中el-table追加行后固定列滚动错位问题
  12. ubuntu16.04 opencv3.3 python2.7 caffe GPU环境搭建
  13. npm error: Maximum call stack size exceeded
  14. 【解题笔记】编程初学者入门训练
  15. p720 自带的磁带机备份aix系统
  16. 阿里云函数计算使用教程
  17. 【韩顺平】设计模式七大原则
  18. Centos7 配置网卡链路聚合(转载)
  19. 演进式架构学习笔记(一):架构评估及适应度函数
  20. 雷军:做互联网需7字诀

热门文章

  1. LeetCode简单题之寻找比目标字母大的最小字母
  2. Structured Streaming编程 Programming Guide
  3. TensorRT 数据和表格示例
  4. CodeGen CreateFile实用程序
  5. 如何为应用选择最佳的FPGA(上)
  6. Single Shot Multibox Detection (SSD)实战(上)
  7. 单目摄像头标定与测距
  8. 2021年大数据Spark(二十六):SparkSQL数据处理分析
  9. 微软CRM 2011 新功能之三:可新增客户化活动类型实体
  10. David与Vincent的博弈游戏[树型DP]