matlab局部变量和全局变量的区别

matlab局部变量和全局变量的区别

和大多数编程语言一样,差别主要体现在两个方面:作用域和生存周期。其中,变量的作用域事实上是变量名字的性质,而变量的生存周期是变量本身是性质。

 

1、作用域

 

作用域是变量语法方面的性质,是指程序中的特定区域,在这些区域中,该变量的名字是有意义的并且变量是“可见的”。所谓的“局部变量”、“全局变量”其实就是针对作用域而言的:局部变量只能在某个函数中可以访问,而全局变量则在程序的任何一个地方都能引用。

 

对于MATALAB而言,全局变量在整个MATLAB进程中可用(包括各函数工作区以及基本工作区),但在使用之前,必需用global声明——注意:在每一个引用该全局变量的函数或基本工作区都需要先进行声明才能够使用。

 

2、生命周期

 

变量的生存周期是变量在运行时的性质,它表示变量在程序运行过程中具有实际意义的值的时间范围。变量的生存周期会受变量名字的作用域的影响:在进入作用域时,局部变量通常开始它的生命周期;离开作用域时,局部变量往往结束了它的生命周期(之所以说“通常”,是因为有类似于C语言中静态变量的那类局部变量,MATLAB中是persistent)。而全局变量除非人为清除,将会在一个session中始终存在。

 

在MATLAB中,要清除全局变量,需要用clear global var_name或者clear all,如果只是clear var_name,只是让全局变量在当前工作区中不可见,并不能真正清除该变量。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-12
a=1 b=2是全局变量,这点没错
因为在main函数中,调用了fun2();,在函数fun2中,把全局变量赋与了新值,a=4和b=9,那么全局变量ab就变为了这个新的数值,在输出的时候就输出它们的新值。
全局变量的含义简单来说就是全部函数可以使用它或全局可以使用,而不是你理解的它的数值是不可改变的。除非你用const来修饰这个变量,即全局变量const int a=1;,这个a就是不可变的,如果在函数中改变a的值,编译都不能通过。
理解了吗望采纳。
第2个回答  推荐于2017-10-04
如果一个函数内的变量没有特别声明,那么这个变量只在函数内部使用,即为局部变量,如果两个或多个函数公用一个变量(或者说在子程序中也要用到主程序中的变量,注意不是参数),那么可以用global来将它声明为全局变量。
全局变量的使用可以减少参数传递,合理利用全局变量可以提高程序执行效率。
如果需要用到其他函数的变量,就要利用在主程序与子程序中分别声明全局变量的方式实现变量的传递,否则函数体内使用的都为局部变量。
相似回答