Apabila ia berkaitan dengan peruntukan pembolehubah dan permulaan, pemasaan boleh berbeza-beza bergantung pada skop pembolehubah. Pembolehubah global, seperti yang dinyatakan, diperuntukkan pada permulaan program. Tetapi bagaimana pula dengan pembolehubah statik yang diisytiharkan dalam fungsi?
Dalam senario yang diberikan, pembolehubah statik secara global diperuntukkan apabila program bermula, serupa dengan pembolehubah global. Ini kerana pembolehubah statik mempunyai jangka hayat yang lebih lama daripada pembolehubah tempatan, mengekalkan nilainya walaupun apabila fungsi ia ditakrifkan dalam keluar.
Masa permulaan pembolehubah statik ialah di mana perkara menjadi menarik. Tidak seperti pembolehubah global, pembolehubah statik tidak dimulakan pada permulaan program. Sebaliknya, ia dimulakan hanya apabila fungsi yang dimilikinya pertama kali dipanggil. Tingkah laku ini jelas dalam contoh program yang disediakan:
void doSomething() { static bool globalish = true; // Initialization occurs here // ... }
Dalam kes ini, pemulaan globalish berlaku apabila doSomething() mula-mula dilaksanakan, bukan pada masa program bermula. Inisialisasi lewat ini dirujuk sebagai "pemulaan malas."
Sebab untuk pengamulaan tertunda ini adalah untuk mengelakkan permulaan yang tidak perlu untuk pembolehubah statik yang mungkin tidak pernah digunakan. Jika program tidak pernah memanggil fungsi yang mengisytiharkan pembolehubah statik, ia menjimatkan memori dan masa pengiraan dengan tidak memulakannya.
Atas ialah kandungan terperinci Bilakah Pembolehubah Statik Dimulakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!