登录
首页 PLC论坛 施耐德电气PLC
回帖 发帖
正文

主题:∞光分享∞045:有用分享-字符串占用地址

点击:451 回复:2

此贴内容大部分来自<施耐德somachine控制器应用技巧120例>中的1.3.21章节
创建一个字符串数组变量
var_global
teststring at %mw0 :array[0..3] of string(5);
end_var
给数组赋值
teststring[0] := "1234";
teststring[1] := "2345";
teststring[2] := "3456";
teststring[3] := "4567";
监视变量如下图
附件 2.jpg
以第一组创建的字符串为例,其字符个数为5个,
则该字符串自动占用5+1个字节地址(%mb0~%mb5).
字符串数组中的字符为"1234",共4个字符,则实际占用的字节数量为4+1=5(%mb0~%mb4),
而实际分配的字节数量为6个,因此,第六个字节(%mb5)被自动分配, (为什么呢?)
但是可以写入数据.而第4+1=5个字节(%mb4)无法写入数据,
teststring[0]: 占用的%mb0~%mb5;其中0~3里是字符数据,4强制为0 5 被占用.可写入数据,以此类推
teststring[1]:%mb6~%mb11
teststring[2]:%mb12~%mb17
teststring[3]:%mb18~%mb23
如果写入的字符数量超过变量定义的最大字符数,则后面的自动丢失.
如下图 赋值1234567 由于字符串定义的是5个字符.所以这个值只显示了"12345"
附件 1.jpg
之前好像看过一个文字说.如果在声明string变量的后面不标注的话.默认是占8个字节.找不到出处了
希望知道的朋友告诉一声
19-11-10 21:24
多占用的一个字节用于放置字符串结束符“/0”,也就是NULL。
Good Luck~
19-11-11 15:00
这个案例里面写的...那个自动分配的地址是可以写入数据的...那是不是说写入的数据把这个终止符给覆盖了呢?
会有影响吗?
19-11-11 15:58

工控新闻

更多新闻资讯