主要内容

global

将变量声明为全局变量

说明

注意

全局变量效率低下,且使得错误难以诊断。请改用带输入变量的函数。有关详细信息,请参阅避免不必要的数据副本

global var1 ... varN 将指定的变量声明为全局变量。

通常每个 MATLAB® 函数均有各自的局部变量,这些局部变量与其他函数的局部变量和基础工作区的局部变量是分开的。但是,如果多个函数都将特定的变量名称声明为 global,则它们都共享该变量的一个副本。在任何函数中对该变量的值做任何更改,在将该变量声明为全局变量的所有函数中都是可见的。

如果首次发出 global 语句时尚不存在全局变量,则此语句初始化为空 0x0 矩阵。

如果当前工作区中已经存在与全局变量具有相同名称的变量,则 MATLAB 会发出警告,并更改该变量的值及其范围以匹配全局变量。

示例

示例

全部折叠

在当前的工作文件夹中创建一个设置全局变量值的函数。

function setGlobalx(val)
global x
x = val;

在当前的工作文件夹中创建一个返回全局变量值的函数。这两个函数拥有单独的函数工作区,但它们两个都可以访问全局变量。

function r = getGlobalx
global x
r = x;

设置全局变量 x 的值并从不同的工作区中获取。

setGlobalx(1138)
r = getGlobalx
r =

        1138

使用您在上一个示例中定义的函数对全局变量赋值。

clear all
setGlobalx(42)

显示全局变量 x 的值。即使变量为全局变量,也不能在命令行中访问。

x
Undefined function or variable 'x'.

在该命令行中将 x 声明为全局变量并显示它的值。

global x
x
x =

    42

更改 x 的值并使用您在上一个示例中定义的函数,以便从不同的工作区返回全局值。

x = 1701;
r = getGlobalx
r =

        1701

提示

  • 要从所有工作区中清除全局变量,请使用 clear global variable

  • 要从当前工作区而不从其他工作区中清除全局变量,请使用 clear variable

  • 全局变量拥有自己的工作区,这些工作区与基础工作区和函数工作区分开。使用全局变量会效率低下。MATLAB 将内存优化应用于函数中的输入变量,但不应用于全局变量。有关详细信息,请参阅避免不必要的数据副本

    同样,全局变量具有显著风险。任何函数都可以访问和更新全局变量。使用此类变量的其他函数可能返回意外结果。例如:

    • 如果您无意间提供与现有全局变量同名的“新”全局变量,一个函数可能覆盖另一个函数预期的值。此类错误很难诊断。

    • 如果一个全局变量在多个函数中发生更改,以不同顺序调用这些函数会导致不同结果。

    请尽可能谨慎使用全局变量。有关变量和工作区的详细信息,请参阅 在工作区之间共享数据 页上的“全局变量”小节。

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出