力图使用最简单明了的文字,来记录学习总结的内容。
1、指针跟整数、浮点数一样是一种数据类型。指针的功能是使用一个双字整数的值(地址编号),来代表一个地址(不能代表位地址)。
2、能被用做指针的地址类型,限为V、L、AC1、AC2、AC3。即本类地址前可以加*符号以代表其指向的地址。
3、指针不能指向AC、L、HC区。能被指针指向的地址,其前可以加&符号以获取其地址编号。
4、指针值的格式和范围,比如指针VD0,其最高字节VB0为地址区,其余3个字节的值代表偏移量。使用16进制表示的话,MB0的址(地址编号)为16#02000000,MB1的址为16#02000001,即M是16#02区地址。I=00,Q=01,M=02,S=03,SM=04,V=08,T=09,C=0A,AIW=0C,AQW=0D。指针值的范围不能超过真实地址范围,否则报错(未驱动执行的错误指针地址也会引起报错)。比如16#0D000001是不存在的,因为AQW区不存在奇数地址。
5、smart指针不做数据类型检查,由指令决定当前指针是什么类型数据。如AC1=&MB0,则MOVB *AC1 VB0时*AC1是字节整数MB0,MOVR *AC1 VD0时*AC1是浮点数MD0。
6、对指针的*操作就是对其指向地址的操作。接上例,如MOVB 1 *AC1就是让MB0=1。
7、对指针值的修改就是更改其指向的地址。接上例,INC AC1就让AC1指向MB1。
8、指针值的获取和修改可以使用任意方式,只要使用时值在地址编号的范围内,程序就可以正常运行(程序员自行确定是否是需要的地址)。总结:【指针值】=【地址址】时两者是同一个东西,*指针就是源地址(的值)。
9、smart指针值的修改,遵循字节步进。即无论指令数据类型是怎样的,指针值加1就是地址加1个字节。若指令是浮点数(4字节)类型,则需要指针值加4才代表前进一个浮点数。
觉得有帮助吧,请留个赞