🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
在变量的前面加上static 就构成了静态变量(static 变量)。 **静态变量:** * 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直到整个程序运行结束。(在函数执行完后不会被销毁,保留上次值) * 静态变量虽在程序的整个执行过程中始终存在,但是在它作 用域之外不能使用。 * 属于静态存储方式的变量不一定就是静态变量。 例如:外部变量(在PHP中指全局变量)虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。 **静态局部变量:** * static类型的内部变量是一种只能在某个特定函数中使用,只会被初始化一次。 * 当在某函数里定义一个静态变量后,这个变量不会即使函数退出了,在下次调用这个函数时,它会使用前次被调用后留下的值。 * 作用域为该函数内部,外部函数不能使用。 * 局部静态变量定义时没有赋初值,系统会自动赋初值0(对数值型变量)或空字符(对字符变量)。 * 局部静态变量占用内存时间较长,并且可读性差 **全局局部变量:** * 全局变量(外部变量)的声明之前加上static 就构成了静态的全局变量。 * 全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。 * 静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。 **普通变量:** * 非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 * 动态变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放,不会保留上次函数运行的值。 ``` // 静态局部变量:函数每次执行都会保留上次值 function static_test() { static $test = 0; $test++; echo $test; } static_test();// 第一次执行 输出 1 static_test();// 第二次执行 输出 2 // 普通局部变量:函数每次执行完都释放 function test() { $test = 0; $test++; echo $test; } test();// 第一次执行 输出 1 test();// 第二次执行 输出 1 ``` > 把局部变量改变为静态变量后是改变了它的存储方式,即改变了它的生存期。 把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。