在变量的前面加上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

把局部变量改变为静态变量后是改变了它的存储方式,即改变了它的生存期。
把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。

最后修改:2020 年 12 月 10 日 08 : 24 PM
对您有帮助的话,请赏包辣条吧 ^~^