局部变量地址

在一个FC块中的局部变量声明表中看到定义的局部变量有地址 
1)这个地址是分配在L区中的吗
 2)在没有调用FC块时 局部变量占有它相对应的地址吗
3)比如在OB1里两次调用同一个FC 第一次调用和第二次调用 块中同一个局部变量分配的地址在两次调用中是一样的吗
因为不懂  所以问的可能没有逻辑 恳请老师们给予指点 谢谢了!

问题补充:
阿鸣老师  你是说这次调用FC和上一次调用同一个FC 系统开辟的临时存储空间可能会不一致 那么系统开辟的临时存储空间是给临时局部变量用的不 还有不一致要怎么理解 然后又是什么造成不一致  你打的地址和空间的比方 从字面上我是看懂了  但是对应到两次调用FC的这个例子上 这个例子和比方有什么联系 我就又不清楚了 还望老师能在百忙中继续给予指点。。。

最佳答案

1)这个地址是分配在L区中。
2)在没有调用FC块时 局部变量占有它相对应的地址吗?
不占有它相对应的地址。系统只有一个局部变量区L,当某个FC块被调用需要局部变量区L时,就被该FC块占有它相对应的地址,一旦该FC块执行结束,所占用的局部变量区L地址就被系统分配他用。
3)比如在OB1里两次调用同一个FC 第一次调用和第二次调用 块中同一个局部变量分配的地址在两次调用中是一样的吗?
地址是一样的。因为这些地址是有你的FC程序所指定的。
可能你问的是“”系统开辟临时存储空间与第一次调用时开辟的是否一致?“”。如是,答案是,开辟的存储空间可能会不一致。
注意地址与存储空间不是一个概念,简单地打个比方,存储空间是房间,地址是这个房间的房间号。今天可以将这个房间标为一个地址,明天可以将另一房间表为这个地址。所以会不一致。
4)问题补充:这个例子和比方有什么联系 我就又不清楚了?与计算机的操作系统一样,其中操作系统要管理系统的存储设备。例如有房间4间,某个时刻一个程序要用到两个地址,系统会将这个两个地址挂在前两个房间上。也许,某个时刻前两个房间已被占用,那么系统就将这个两个地址挂在后两个房间上。总之,会有两个房间给你用。

提问者对于答案的评价:
好像有点懂了 谢谢阿鸣老师~~

专家置评

也可以参看我心飞翔给的链接。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc228605.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐