上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.3 变量类型
3.3.1 局部变量
在函数体内定义的变量为局部变量,只能被定义的函数所访问,函数运行结束,局部变量所占用的内存空间自动释放(局部变量也就不存在了),不同的函数可以使用相同的局部变量名,因为不同的函数有独立的存储空间。
3.3.2 全局变量
全局变量需要使用global关键字来声明,不同函数可以共享全局变量的内容,当一个函数对全局变量进行修改后,其他函数所读取的全局变量值也发生相应变化。
3.3.3 永久变量
永久变量(persistent)只能在M文件的函数中定义和使用,需要在使用该变量的前面定义,其初始化值为空([ ])。与局部变量不同的是,即使函数退出,永久变量也不会从内存中清除,当下次调用该函数时,仍保留退出前的变量值。
下面的例子中将变量avalue定义为永久变量,每调用一次函数plusone,永久变量avalue的值增加1,并将其赋值给返回参数ret,程序代码如下:
%plusone.m (文件位于Psyfeng\Little_Examples目录下) function ret=plusone persistent avalue; %定义变量avalue为永久变量 if isempty(avalue) avalue=1; %如果变量值为空,则对其赋值1 else avalue=avalue+1; %如果不为空,则变量值加1 end ret=avalue; %将变量值赋予返回参数ret end
然后在命令窗口中调用函数plusone,结果如下:
>> plusone↙
ans = 1
>> plusone↙
ans = 2
>> plusone↙
ans = 3
可以看出,每执行函数pluseone一次,返回值增加1。