下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘要: 一. 指针变量的定义指针变量定义与一般变量的定义类似,其形式如下:数据类型 * 标识符; 表示被定义为基于存储器的指针,无此选项时,被定义为一般指针。这两种指针的区别在于它们的存储字节不同。一般指针在内存 .一. 指针变量的定义指针变量定义与一般变量的定义类似,其形式如下:数据类型 存储器类型1 * 存储器类型2 标识符;存储器类型1 表示被定义为基于存储器的指针,无此选项时,被定义为一般指针。这两种指针的区别在于它们的存储字节不同。一般指针在内存中占用三个字节,第一个字节存放该指针存储器类型的编码(由编译时由编译模式的默认值确定),第二和第三字节分别存放该指针的高位和低位地址偏移量。
2、存储器类型的编码值如下:存储类型IIdata/data/bdataxdatapdataCode编码值0x000x010xFE0xFF存储类型2用于指定指针本身的存储器空间。1. char * c_ptr; int * i_ptr; long * l_ptr;上述定义的是一般指针,c_ptr指向的是一个char型变量,那么这个char型变量位于哪里呢?这和编译时由编译模式的默认值有关,如果Menory ModelVariableLarge:XDATA,那么这个char型变量位于xdata区:如果Menory ModelVariableCompact:PDATA, 那么这个char型变量位于pda
3、ta 区:如果Menory ModelVariableSmall: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区中的in
4、t型变量,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在片外存储区xdata中;long code * xdata l_ptr; /表示指向的是code区中的long型变量,l_ptr在片内存储区xdata中;二. 指针应用1. int x, j;int * px, *p
5、y;px=&x; py=&y; 2. *px=0; py=px; 3. *px+*(px+ 4. (*px+x+ 5. 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 /等价于
6、 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;将阴影部分遮盖,这个意思就
7、是将0x4000强制转换为指向xdata区中的X型变量的指针,这个X型变量就是阴影“int xdata *”,也就是0x4000指向的变量类型是一个指向xdata区中的int型变量的指针,即0x4000中放的是另外一个指针,这个指针指向的是xdata区中的int型变量。Px值放的是0x4000中放的那个指针。比如【0x4000】【0x2000】0x34。Px0x2000。 12. x=*(int xdata * xdata *0x4000; x中放着0x4000中放的那个指针所指向的值。比如【0x4000】【0x2000】0x34。三. 指针与数组1. int arr10;int * pr;p
8、r=arr; / 等价于pr&arr0;这样的话,*(pr+1=arr1; *(pr+2=arr2; *(arr+3=arr3; *(arr+4=arr4;或者 pr0,pr1.代表 arr0,arr1.可以*pr+ (等价于*(pr+,来访问所有数组元素,而*arr+是不行的。因为arr是常量,不能+运算 2. char * s1char code str=”abcdefg”s1=str; 3. char *s1=”abcdefg”;四. 指针与结构体1. typedef struct _data_str unsigned int DATA110;unsigned int DATA210;u
9、nsigned int DATA310;unsigned int DATA410;unsigned int DATA510;unsigned int DATA610;unsigned int DATA710;unsigned int DATA810;DATA_STR;/开辟一个外RAM空间,确保这个空间够装你所需要的xdata uchar my_dataMAX_STR _at_ 0x0000;DATA_STR *My_Str;My_Str=(DATA_STR*my_data; /把你的结构体指针指向这个数组的开头以后的操作就这样:My_Str-DATA10=xxx;My_Str-DATA11=xxx;那么你的变量就自然放到XDATA中去了.注意定义的my_dataMAX_STR,不能随便被操作,它只是开始的时候用来开辟内存用的. 2. struct studentchar name20;int num;stu1,stu2; 3. struct studentchar name20;int num;;struct stude
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 竖式计算苏教版二年级下册练习
- 高山仰止领悟苏教版教材的博大
- 北师大版小学数学公式解析与解析技巧
- 简单几何体课件教学实践心得
- 译林版英语三年级下册知识点精讲
- 新课标人教版小学数学题库
- 掌握小数苏教版教学设计理念与实践经验分享
- 语文学习苏教版必修三四课文理解性默写
- 语文苏教版必修一探究
- 过秦论中的权力斗争
- 改革开放简史智慧树知到课后章节答案2023年下北方工业大学
- 人教版四年级数学上册【分层训练】3.4 画角 四年级上册数学同步练习 人教版(含答案)
- 初中物理实验报告范例2-观察蒸发现象
- 四川JS-004竣工验收报告
- 严重感染患者麻醉处理课件-002
- 物料存储周期表
- 《红烛》导学案 统编版高中语文必修上册
- 中国式现代化
- 《自主选择课余生活》示范课件
- 五人英语话剧剧本《TheSilberSwindle》通用版英语六年级下册
- 土木工程专业工地实习答辩(课堂PPT)
评论
0/150
提交评论