Rumah > pembangunan bahagian belakang > C++ > Bilakah Pembolehubah Statik Dimulakan?

Bilakah Pembolehubah Statik Dimulakan?

Susan Sarandon
Lepaskan: 2024-11-27 02:38:10
asal
540 orang telah melayarinya

When are Static Variables Initialized?

Peruntukan dan Permulaan Pembolehubah Statik

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?

Peruntukan Pembolehubah Statik

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.

Permulaan Pembolehubah Statik

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
  // ...
}
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan