c语言指针的说明以*为分隔符,
“*”之前的存储类型限定-指针指向的对象数据的存储位置;
限定“*”之后的存储类型-指针本身所在的存储位置。
所以unsignedcharxdata*p; 与xdataunsignedchar*p不同。 说明的有两件事。
然后:
xdataunsignedchar*p; 无符号char * xdatap; 完全一样。
因为c的写法允许“最前面的存储类型修饰符修饰最后的对象”。
看看下面的步骤示例。
; unsignedcharxdata*p0;
;
; xdataunsignedchar*p1;
;
; uchara=0x20;
;
; Void主() )
; {
; p0=a;
; p1=a;
; }
NAMEPOINTER
? 宣传? 主要吗? POINTERSEGMENTCODE
? C_INITSEGSEGMENTCODE
? DT? POINTERSEGMENTDATA
? XD? POINTERSEGMENTXDATA
扩展代码(? C_STARTUP )
PUBLICa?
公共P1
公共P0
公共主
罗格? DT? POINTER
p0:DS2//p0指针在data区域中定义。
A?DS1
罗格? XD? POINTER
p1:DS3//p1指针在xdata区域中定义。
罗格? C_INITSEG
DB001H
DBa?
DB020H
; #pragmasrc
;
;
罗格? 宣传? 主要吗? POINTER
main:
; SOURCELINE#11
; {
; SOURCELINE#12
;
; p0=a;
; SOURCELINE#14
MOVp0,#high(A? )
MOVp0 01H,#low(a? //p0-2字节指针即时寻址
; p1=a;
; SOURCELINE#15
MOVDPTR,#p1
CLRA
MOVX@DPTR,a
INCDPTR
MOVA,#high(A? )
MOVX@DPTR,a
INCDPTR
MOVA,#low(a? )
MOVX@DPTR,A//p1-3字节公共指针间接寻址。
;
; }
; SOURCELINE#17
RET
; 主结束
结束