• 绿地申花公布新队徽 豹子头回归增加1993受好评 2019-03-17
  • 中宣部授予张黎明“时代楷模”称号 2019-03-14
  • 林业和草原局:加大对海南生态保护和修复支持力度 2019-02-28
  • 质疑的能力都没有,还有批判的余地吗》?看着就想笑 2019-02-28
  • Steam《野兽传奇》免费领取原价48元 2019-02-08
  • 上班族用手机电脑过度 肩颈僵硬疼痛怎么办-生活资讯 2018-11-22
  • 藏品快报:如何评价和田玉籽料原石的当下与未来? 2018-11-22
  • 高中生给班主任写期末评语 2018-11-22
  • 回复@“老笑头”,共产主义需要分配生产资料应该是你做梦的时候梦到的吧!这除了让网友们笑掉大牙,还能有什么?你确实是让网友们看着就想笑!哈哈哈哈! 2018-11-21
  • 绝崖山谷藏神秘古寺 简单就是世界奇观 2018-11-21
  • 【阿里天气】最新阿里今天天气,实时提供阿里气温、空气质量、24小时天气预报、生活指数查询 2018-11-21
  • 在人才培养体系建设上下功夫 2018-11-20
  • 13少年被逼参与盗窃遭烟头烫伤 21天撬130辆车 2018-11-20
  • 【瀚清】依然月明如昔,大寨今日可安好。现在也许是我们重新认识大寨和大寨道路的时候了。 2018-11-20
  • 11选5杀号精准公式99% > 控制/MCU > 正文

    11选5怎么买能够挣钱:C51单片机指针变量的定义及应用

    2018年11月14日 16:34 ? 次阅读

    11选5杀号精准公式99% www.phde.net 一。 指针变量的定义

    指针变量定义与一般变量的定义类似,其形式如下:

    数据类型 [存储器类型1] * [存储器类型2] 标识符;

    [存储器类型1] 表示被定义为基于存储器的指针。无此选项时,被定义为一般指针。这两种指针的区别在于它们的存储字节不同。一般指针在内存中占用三个字节,第一个字节存放该指针存储器类型的编码(由编译时由编译模式的默认值确定),第二和第三字节分别存放该指针的高位和低位地址偏移量。存储器类型的编码值如下:

    存储类型IIdata/data/bdataxdatapdataCode编码值0x000x010xFE0xFF

    C51单片机指针变量的定义及应用

    [存储类型2]用于指定指针本身的存储器空间。

    1、

    char * c_ptr;

    int * i_ptr;

    long * l_ptr;

    上述定义的是一般指针,c_ptr指向的是一个char型变量,那么这个char型变量位于哪里呢?这和编译时由编译模式的默认值有关,

    如果Menory Model—Variable—Large:XDATA,那么这个char型变量位于xdata区:

    如果Menory Model—Variable—Compact:PDATA,那么这个char型变量位于pdata 区:

    如果Menory Model——Variable——Small:DATA,那么这个char型变量位于data区。

    而指针c_ptr, i_ptr, l_ptr变量本身位于片内数据存储区中。

    2、

    char * data c_ptr;

    int * idata i_ptr;

    long * xdata l_ptr;

    上述定义,c_ptr, i_ptr, l_ptr变量本身分别位于data ,idata,xdata区。

    3、

    char data * c_ptr;  //表示指向的是data区中的char型变量,c_ptr在片内存储区中;

    int xdata * i_ptr;  //表示指向的是xdata区中的int型变量,i_ptr在片内存储区中;

    long code * l_ptr;  //表示指向的是code区中的long型变量,l_ptr在片内存储区中;

    4、

    char data * data c_ptr;  //表示指向的是data区中的char型变量,c_ptr在片内存储区data中;

    int xdata * idata i_ptr;  //表示指向的是xdata区中的int型变量,i_ptr在片内存储区idata中;

    long code * xdata l_ptr;  //表示指向的是code区中的long型变量,l_ptr在片外存储区xdata中;

    二。 指针应用

    1、

    int x, j;

    int *px, *py;

    px=&x;

    py=&y;

    2、

    *px=0;

    py=px;

    *px++ 《=》 *(px++)

    (*px)++ 《=》 x++

    复制代码

    unsigned char xdata * x;

    unsinged char xdata * y;

    x=0x0456;

    *x=0x34

    //等价于 mov dptr,#456h

    // mov a,#34h

    // movx @dptr,a

    复制代码

    6、

    复制代码

    unsigned char pdata * x;

    x=0x045;

    *x=0x34

    //等价于 mov r0,#45h

    //    mov a,#34h

    //    movx @r0,a

    复制代码

    7、

    复制代码

    unsigned char data * x;

    x=0x30;

    *x=0x34

    //等价于 mov a,#34h

    //    mov 30h ,a

    复制代码

    8、

    int *px;

    px=(int xdata *)0x4000;

    //将 xdata 型指针 0x4000 赋给 px,也就是将0x4000强制转换为指向xdata区中的int型变量的指针,将其赋给px。

    9、

    int x;

    x=*( (char xdata *)0x4000 );

    //将0x4000强制转换为指向xdata区中的int型变量的指针,从这个地址中取出值赋给变量x。

    10、

    px=*((int xdata * xdata *)0x4000); //如何分析?

    11、

    px=*((int xdata * xdata *)0x4000);  //将阴影部分遮盖,这个意思就是将0x4000强制转换为指向xdata区中的X型变量的指针,这个X型变量就是阴影“int xdata *”,

    //也就是0x4000指向的变量类型是一个指向xdata区中的int型变量的指针,即0x4000中放的是另外一个指针,这个指针指向的是xdata区中的int型变量。

    //Px值放的是0x4000中放的那个指针。比如【0x4000】—【0x2000】-0x34。*Px=0x2000。

    12、

    x=**((int xdata * xdata *)0x4000); //x中放着0x4000中放的那个指针所指向的值。比如【0x4000】—【0x2000】-0x34。

    三。 指针与数组

    1、

    int arr[10];

    int * pr;

    pr=arr; // 等价于pr=&arr[0];

    这样的话,*(pr+1)==arr[1]; *(pr+2)==arr[2]; *(arr+3)==arr[3]; *(arr+4)==arr[4];或者 pr[0],pr[1]…。代表 arr[0],arr[1]…。.

    可以*pr++ (等价于*(pr++)),来访问所有数组元素,而*arr++是不行的。因为arr是常量,不能++运算

    2、

    char *s1

    char code str[]=”abcdefg”

    s1=str;

    3、

    char *s1=”abcdefg”;

    四。 指针与结构体

    1、

    复制代码

    typedef struct _data_str {

    unsigned int DATA1[10];

    unsigned int DATA2[10];

    unsigned int DATA3[10];

    unsigned int DATA4[10];

    unsigned int DATA5[10];

    unsigned int DATA6[10];

    unsigned int DATA7[10];

    unsigned int DATA8[10];

    }DATA_STR; //开辟一个外RAM空间,确保这个空间够装你所需要的

    xdata uchar my_data[MAX_STR] _at_ 0x0000;

    DATA_STR *My_Str;

    My_Str=(DATA_STR*)my_data; //把你的结构体指针指向这个数组的开头

    复制代码

    以后的操作就这样:

    My_Str-》DATA1[0]=xxx;

    My_Str-》DATA1[1]=xxx;

    那么你的变量就自然放到XDATA中去了。

    注意:定义的my_data[MAX_STR],不能随便被操作,它只是开始的时候用来开辟内存用的。

    2、

    复制代码

    struct student

    {

    char name[20];

    int num;

    }stu1,stu2;

    复制代码

    3、

    复制代码

    struct student

    {

    char name[20];

    int num;

    };

    struct student stu1,stu2;

    struct student *p;

    p=&stu1;

    复制代码

    访问成员方法:

    A. stu1.num

    B. (*p).num; //因为“?!钡挠畔燃陡哂凇?”所以要加括号。

    C. P-》num;

    4、

    struct student stu[10];

    struct student * p;

    p=stu;

    技术专区

    下载发烧友APP

    打造属于您的人脉电子圈

    关注电子发烧友微信

    有趣有料的资讯及技术干货

    关注发烧友课堂

    锁定最新课程活动及技术直播
    收藏 人收藏
    分享:

    评论

    相关推荐

    C51单片机通过I2C对EEPROM进行页读取的问题求助

    发表于 2018-11-12 08:15 ? 27次阅读
    C51单片机通过I2C对EEPROM进行页读取的问题求助

    基于C51单片机对液晶显示的实验设计

    程序一:在液晶屏上显示一个1 //在液晶屏上显示一个字符 #include #de...

    发表于 2018-11-08 16:37 ? 75次阅读
    基于C51单片机对液晶显示的实验设计

    C51单片机在电机转速测量仿真系统中的设计

    该单片机电机转速测量系统仿真仿真采用测频法“M法”测量电机转速。即在一定测量时间T内,测量脉冲发生器...

    发表于 2018-11-05 15:31 ? 86次阅读
    C51单片机在电机转速测量仿真系统中的设计

    C51单片机中定义一个全局变量会有怎样的影响

    全局变量被定义在内存中的专门地址上,存储位置固定。对于频繁存取的重要变量但可以采用全局变量以减少代码...

    发表于 2018-11-02 16:38 ? 114次阅读
    C51单片机中定义一个全局变量会有怎样的影响

    单片机中的上下拉电阻有什么作用

    上拉电阻就是将不确定的信号通过一个电阻拉到高电平,同时此电阻也起到一个限流作用,下拉就是下拉到低电平...

    发表于 2018-11-02 16:22 ? 151次阅读
    单片机中的上下拉电阻有什么作用

    C51单片机对DS18B20温度计的控制

    18B20温度计,正负温度显示。最大99摄氏度。用万能板手工焊接。调试成功,正常显示。共阳数码管由三...

    发表于 2018-11-02 15:40 ? 126次阅读
    C51单片机对DS18B20温度计的控制

    基于C51中断过程及interrupt和usin...

    8051 系列 MCU 的基本结构包括:32 个 I/O 口(4 组8 bit 端口);两个16 位...

    发表于 2018-10-30 16:22 ? 80次阅读
    基于C51中断过程及interrupt和usin...

    如何采用C51单片机读写CAT24C32

    #defineWriteDeviceAddress0x0A2//定义器件在I2C总线中的写地址(注意...

    发表于 2018-10-30 16:06 ? 77次阅读
    如何采用C51单片机读写CAT24C32

    立创商城基于GD32单片机的WIFI网络存储SD卡 袋装

    发表于 2018-10-29 20:08 ? 98次阅读
    立创商城基于GD32单片机的WIFI网络存储SD卡 袋装

    基于C51单片机中的通信协议分享

    通信头-》巴克码-》地址字-》长度字-》命令字-》信息位-》校准字 1.通信头:占1~8个字节...

    发表于 2018-10-29 16:08 ? 102次阅读
    基于C51单片机中的通信协议分享

    51单片机串行口通讯proteus仿真

    发表于 2018-10-26 18:46 ? 175次阅读
    51单片机串行口通讯proteus仿真

    请问avr和c51单片机有什么区别?

    发表于 2018-08-15 04:31 ? 174次阅读
    请问avr和c51单片机有什么区别?

    云龙C51单片机教学视频

    发表于 2018-07-19 03:49 ? 174次阅读
    云龙C51单片机教学视频

    从Keil C51到DSP28335移植出现问题是为什么?如何解决?

    发表于 2018-06-11 08:39 ? 172次阅读
    从Keil C51到DSP28335移植出现问题是为什么?如何解决?

    用两个51单片机进行双机通信,甲机发送给乙机,乙机接收并用数码管显示,显示的数字和发送的数字不一致是为什么?

    发表于 2018-06-07 18:22 ? 609次阅读
    用两个51单片机进行双机通信,甲机发送给乙机,乙机接收并用数码管显示,显示的数字和发送的数字不一致是为什么?

    LCD12864仿真程序无法显示

    发表于 2018-05-08 18:14 ? 360次阅读
    LCD12864仿真程序无法显示

    基于单片机的电动车智能充电器怎么设计

    发表于 2018-04-20 17:22 ? 1010次阅读
    基于单片机的电动车智能充电器怎么设计

    请问像4054那样的充电ic,如何用单片机读取chrg端口充电状态

    发表于 2018-04-03 15:57 ? 1669次阅读
    请问像4054那样的充电ic,如何用单片机读取chrg端口充电状态

    51单片机汇编延时程序算法详解

    MCS-51单片机的指令有单字节、双字节和三字节的,它们的指令周期不尽相同,一个单周期指令包含一个机...

    发表于 2018-03-12 09:48 ? 1449次阅读
    51单片机汇编延时程序算法详解

    单片机C51存储器类型及存储模式

    单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处...

    发表于 2017-11-16 09:41 ? 1862次阅读
    单片机C51存储器类型及存储模式

    三种C51单片机上电复位延时电路图

    下面几种延时复位电路,都是利用在单片机RST引脚上外接一个RC支路的充电时间而形成的。

    发表于 2014-09-11 10:59 ? 5081次阅读
    三种C51单片机上电复位延时电路图

    用C51单片机设计远程红外安防监控管理系统

    摘 要:介绍了基于移动GSM\GPRS 网络的远程红外监控管理系统的总体设计方案。本系统采用C805...

    发表于 2012-10-10 10:56 ? 5901次阅读
    用C51单片机设计远程红外安防监控管理系统

    C51单片机及C语言知识点必备秘籍

      电子发烧友网讯:应广大电子发烧友网读者要求,本电子书《C51单片机及C语言知识点必备秘籍》为《单...

    发表于 2012-07-30 13:59 ? 7327次阅读
    C51单片机及C语言知识点必备秘籍

    单片机C语言知识点全攻略(完结篇)

    电子发烧友网讯:继《单片机学习知识点全攻略》得到广大读者好评,根据有网友提出美中不足的是所用单片机编...

    发表于 2012-07-11 14:41 ? 15549次阅读
    单片机C语言知识点全攻略(完结篇)

    一键多功能按键识别技术原理图

    如图所示,开关 SP1 接在 P3.7/RD 管脚上,在 AT89S51 单片机的 P1 端口接有四...

    发表于 2012-05-22 15:38 ? 1920次阅读
    一键多功能按键识别技术原理图

    基于C51单片机的手动计数器设计电路图

    利用 AT89S51 单片机来制作一个手动计数器,在 AT89S51 单片机的 P3.7 管脚接一个...

    发表于 2012-05-22 15:03 ? 2937次阅读
    基于C51单片机的手动计数器设计电路图

    基于C51单片机的计时器设计原理图

    如下图所示,在 AT89S51 单片机的 P0 和 P2 端口分别接有两个共阴数码管 P0 口驱动显...

    发表于 2012-05-22 13:57 ? 2670次阅读
    基于C51单片机的计时器设计原理图

    基于C51单片机的按键识别原理图

    每按下一次开关 SP1 ,计数值加 1 ,通过 AT89S51 单片机的 P1 端口的 P1.0 到...

    发表于 2012-05-21 16:34 ? 3062次阅读
    基于C51单片机的按键识别原理图

    基于C51单片机的I/O并行口直接驱动LED显示...

    如图 13 所示,利用 AT89S51 单片机的 P0 端口的 P0.0 - P0.7 连接到一个共...

    发表于 2012-05-21 16:08 ? 1472次阅读
    基于C51单片机的I/O并行口直接驱动LED显示...

    基于C51单片机的报警产生器电路原理图

    用 P1.0 输出 1KHz 和 500Hz 的音频信号驱动扬声器,作报警信号,要求 1KH z信号...

    发表于 2012-05-21 16:04 ? 1221次阅读
    基于C51单片机的报警产生器电路原理图

    基于C51单片机的多路开关状态显示电路原理图

    如下图所示, AT89S51 单片机的 P1.0 - P1.3 接四个发光二极管 L1 - L4 ,...

    发表于 2012-05-21 15:51 ? 2280次阅读
    基于C51单片机的多路开关状态显示电路原理图

    C51单片机看门狗电路

    采用89C51单片机和X25045组成的看门狗电路,可通过软件预置系统的监控时间。

    发表于 2012-02-14 10:44 ? 6615次阅读
    C51单片机看门狗电路

    C51单片机的中断号以及中断向量

    本内容简单介绍了C51单片机的中断号以及中断向量,方便大家了解和学习

    发表于 2012-02-02 15:25 ? 2746次阅读
    C51单片机的中断号以及中断向量

    C51单片机矩阵键盘扫描去抖程序

    C51单片机矩阵键盘电子扫描去抖程序 这段有1个C51的项目,用的是新华龙的C51 F020单片机。...

    发表于 2011-10-25 15:43 ? 9755次阅读
    C51单片机矩阵键盘扫描去抖程序

    基于C51单片机的校园自助导览仪设计

    本设计是基于校园的一种电子产品,将旅游景点的解说以MP3格式存储,通过无线形式实现智能控制。本文还对...

    发表于 2011-07-07 10:29 ? 1037次阅读
    基于C51单片机的校园自助导览仪设计
  • 绿地申花公布新队徽 豹子头回归增加1993受好评 2019-03-17
  • 中宣部授予张黎明“时代楷模”称号 2019-03-14
  • 林业和草原局:加大对海南生态保护和修复支持力度 2019-02-28
  • 质疑的能力都没有,还有批判的余地吗》?看着就想笑 2019-02-28
  • Steam《野兽传奇》免费领取原价48元 2019-02-08
  • 上班族用手机电脑过度 肩颈僵硬疼痛怎么办-生活资讯 2018-11-22
  • 藏品快报:如何评价和田玉籽料原石的当下与未来? 2018-11-22
  • 高中生给班主任写期末评语 2018-11-22
  • 回复@“老笑头”,共产主义需要分配生产资料应该是你做梦的时候梦到的吧!这除了让网友们笑掉大牙,还能有什么?你确实是让网友们看着就想笑!哈哈哈哈! 2018-11-21
  • 绝崖山谷藏神秘古寺 简单就是世界奇观 2018-11-21
  • 【阿里天气】最新阿里今天天气,实时提供阿里气温、空气质量、24小时天气预报、生活指数查询 2018-11-21
  • 在人才培养体系建设上下功夫 2018-11-20
  • 13少年被逼参与盗窃遭烟头烫伤 21天撬130辆车 2018-11-20
  • 【瀚清】依然月明如昔,大寨今日可安好。现在也许是我们重新认识大寨和大寨道路的时候了。 2018-11-20