故事作者:阳春节拍

最近创作

看看TA的故事

学习笔记之指针

已锁定

阳春节拍

  • 帖子

    382
  • 精华

    2
  • 被关注

    5

论坛等级:侠士

注册时间:2023-03-01

钻石 钻石 如何晋级?

学习笔记之指针

463

0

2024-11-28 17:43:01

力图使用最简单明了的文字,来记录学习总结的内容。


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才代表前进一个浮点数。


觉得有帮助吧,请留个赞

学习笔记之指针 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

网友专栏

共有3366条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。