5.4 用全局内存分享数据

我们已经看到了,函数与程序之间交换数据是通过参数列表来完成的。当一个函数被调用时,每一个实参都会被复制,而这个复制量将在函数中用到。对于参数列表还有一些补充,MATLAB函数与每一个参数或基本工作区通过全局内存交换数据。全局内存是指内存的一种特殊类型,它能够被所有的工作区访问。如果一个变量在函数中被声明为全局变量,那么它将占用的是全局内存,而不是本地工作区。如果相同的变量在另一个函数中被声明为全局变量,那么这个变量所占有内存区域就是第一个函数中的相同变量。声明有全局变量的脚本或函数将有办法访问相同的值,所以全局变量为函数之间分享数据提供了一个方法。

全局变量的声明要用到global主语句,基本形式如下:


global var1 var2 var3 ...

其中var1var2var3等等是用全局内存的变量。为了方便,全局变量将在函数开头被声明,但是实际上没有这个必要。好的编程习惯是把全局变量声明在函数的开头,这样可以区别于本地变量。每一个全局变量在函数第一次使用之前必须声明。如果在本地工作区中已经被创建,那么再次声明为全局变量将会产生错误。为了避免这种错误,在函数中的初始注释行之后和第一个可执行性语句之前声明全局变量。好的编程习惯是在函数中的初始注释行之后和第一个可执行性语句之前声明全局变量,尤其适用于在许多函数分享大容量数据时,这样全部的数据在每一次被函数调用时就不必再复制了。用全局变量在函数之间交换数据的不利一面是函数只能为特定的数据工作。通过输入数据参数交换数据的函数能用不同的参数调用它,而用全局变量进行数据交换的函数必须进行修改,以便它能与不同的数据进行工作。在一组相关的函数之间共享隐藏数据时全局变量也非常有用,而这些隐藏数据对所调用的程序来说却是不可见的。

为了更好地理解这些编程技巧,您可以参考MATLAB编程技巧MATLAB全局变量实例等资源。这些文档提供了丰富的实例和详细的解释,帮助您更好地掌握MATLAB编程中的全局变量使用方法。如果对避免使用全局变量感兴趣,可以阅读精彩编程与编程技巧,了解更多避免全局变量的方法和技巧。

您可能会惊讶地发现,全局变量有时能为我们节省大量的内存和处理时间,但也可能使程序变得难以维护和调试!因此,掌握何时、如何正确使用全局变量是一项重要的编程技能。