php 函数引用调用有关问题
Jun 13, 2016 pm 12:07 PM
php 函数引用调用问题
function &test(){
static $b = 1;
$b += 2;
return $b;
}
$a = &test();
$a =8;
$c = &test(); // 这里再次调用test() 函数,为什么不再执行static $b = 1;这个语句。因为结果表明此时$c=10.
// 如果将static去掉,结果是3. 这个怎么解释?谢谢!
echo $c;
------解决思路----------------------
static修饰了变量$b,那么它就是一直存在的,去掉static,那么每次调用都会初始化一次
因为$a = &test();(加了&,地址传递)所以$a被改变,那么静态变量$b的值也被改变,所以在执行$c = &test();时,此时$b的值是8,返回10
------解决思路----------------------
静态变量只在声明时赋初值,静态变量具有全局变量的性质,只是作用域不同
------解决思路----------------------
静态变量只存在于函数作用域内,也就是说,静态变量只存活在栈中。一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会。就是说,下次再调用这个函数的时候,该变量的值会保留下来。
------解决思路----------------------
静态变量只在声明时赋初值,静态变量具有全局变量的性质,只是作用域不同 +1

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Jam pintar Huawei Watch GT 5 mendapat kemas kini dengan ciri baharu

Mimpi Kolonel Sanders Tekken digoreng oleh KFC

Samsung Galaxy Z Fold Edisi Khas didedahkan untuk mendarat pada akhir Oktober apabila nama yang bercanggah muncul

Pandangan pertama: Video pembongkaran kotak yang bocor bagi pengecas dinding 140W 4-port Anker Zolo akan datang dengan paparan

Pemanas Minyak Xiaomi Mijia Graphene baharu dengan HyperOS tiba

Ulasan Cybertruck FSD memuji penukaran lorong cepat dan visualisasi skrin penuh

Garmin mengeluarkan peningkatan aktiviti Adventure Racing untuk berbilang jam tangan pintar melalui kemas kini baharu

Manjaro 24.1 \'Xahea\' dilancarkan dengan KDE Plasma 6.1.5, VirtualBox 7.1 dan banyak lagi
