首页 理论教育局部变量的使用和注意事项

局部变量的使用和注意事项

【摘要】:图5-96 创建局部变量方法一图5-97 创建局部变量方法二使用局部变量可以在一个程序的多个位置实现对前面板控件的访问,也可以在无法连线的框图区域之间传递数据。每一个局部变量都是对某一个前面板控件数据的引用。并且,过多的使用局部变量还会使程序的可读性变差,并且有可能导致不易发现的错误出现。图5-100 竞态问题举例局部变量只能在同一个VI中使用,而不能在不同的VI之间使用。

创建局部变量的方法有两种:第一种方法是直接在程序框图中已有的对象上单击鼠标右键,从弹出的快捷菜单中创建局部变量,如图5-96所示。第二种方法是在函数选板中的结构子选板中选择局部变量,形成一个没有被赋值的变量,此时的局部变量没有任何用处,因为它还没有和前面板的控制或指示相关联,这时可以通过在前面板添加控件来填充其内容,如图5-97所示。

978-7-111-53194-4-Chapter05-113.jpg

图5-96 创建局部变量方法一

978-7-111-53194-4-Chapter05-114.jpg

图5-97 创建局部变量方法二

使用局部变量可以在一个程序的多个位置实现对前面板控件的访问,也可以在无法连线的框图区域之间传递数据。每一个局部变量都是对某一个前面板控件数据的引用。可以为一个输入量或输出量建立任意多的局部变量,从它们中的任何一个都可以读取控件中的数据,向这些局部变量中的任何一个写入数据,都将改变控件本身和其他局部变量。

图5-98显示了使用同一个开关同时控制两个While循环。

使用随机数(0~1)和While循环分别产生两组波形,在第一个循环中用布尔变量来控制循环是否继续,并创建其局部变量,在第二个循环中用第一个开关的局部变量连接到条件端子,对循环进行控制。

978-7-111-53194-4-Chapter05-115.jpg

图5-98 同时控制两个While循环的程序框图(www.chuimin.cn)

相应的前面板如图5-99所示。

978-7-111-53194-4-Chapter05-116.jpg

图5-99 同时控制两个循环的前面板显示

一个局部变量就是其对应前面板对象的一个复制,要占一定的内存,所以使用过多的局部变量会占用大量内存,尤其当局部变量是数组这样的复合数据类型时。所以在使用局部变量时要先考虑内存,局部变量会复制数据缓冲区。从一个局部变量读取数据时,便为相关控件的数据创建了一个新的缓冲区。如果使用局部变量将大量数据从程序框图上的某个地方传递到另一个地方,通常会使用更多的内存,最终导致执行速度比使用连线来传递数据更慢。若在执行期间需要存储数据,可考虑使用移位寄存器。并且,过多的使用局部变量还会使程序的可读性变差,并且有可能导致不易发现的错误出现。

局部变量还可能引起竞态问题,如图5-100所示,此时无法估计出数值的最终值是多少,因为无法确认两个并行执行代码在时间上的执行顺序。该程序的输出取决于各运算的运行顺序。由于这两个运算间没有数据依赖关系,因此很难判断出哪个运算先运行。为避免竞争状态,可以用使用数据流或顺序结构,以强制加入运行顺序控制的机制,或者不要同时读写同一个变量。

978-7-111-53194-4-Chapter05-117.jpg

图5-100 竞态问题举例

局部变量只能在同一个VI中使用,而不能在不同的VI之间使用。若需要在不同的VI之间进行数据传递,则要使用全局变量。