Rumah >pembangunan bahagian belakang >C++ >Apakah Kelakuan Seumur Hidup dan Permulaan/Penyahinisian Pembolehubah Statik dalam Fungsi C?

Apakah Kelakuan Seumur Hidup dan Permulaan/Penyahinisian Pembolehubah Statik dalam Fungsi C?

Linda Hamilton
Linda Hamiltonasal
2024-12-28 14:19:22907semak imbas

What is the Lifetime and Initialization/Deinitialization Behavior of Static Variables in C   Functions?

Hayat Pembolehubah Statik dalam Fungsi C

Apabila pembolehubah diisytiharkan sebagai statik dalam fungsi, ia dimulakan sekali sahaja dan nilainya dikekalkan sepanjang panggilan fungsi berikutnya. Walau bagaimanapun, menentukan jangka hayatnya yang tepat adalah penting untuk memahami kelakuannya.

Hayat pembolehubah statik fungsi merangkumi:

  • Permulaan: Berlaku pada kali pertama pelaksanaan program mencapai pengisytiharan pembolehubah, memastikan pemulaannya sahaja sekali.
  • Penyahinisian: Tidak seperti pembolehubah automatik, statik fungsi dinyahinisialisasi semasa penamatan program, menjamin pelepasan sumber yang betul.

Mengenai panggilan pembina dan pemusnahnya, Piawaian C menentukan bahawa ia dipanggil secara automatik semasa pemulaan dan penyahinisian, masing-masing. Ini memastikan penciptaan dan pemusnahan objek yang sesuai.

Contoh Sepanjang Hayat

Pertimbangkan coretan kod berikut:

void foo() { 
    static string plonk = "When will I die?";
}

Dalam contoh ini, pembolehubah statik plonk dimulakan apabila pelaksanaan memasuki fungsi foo buat kali pertama. Oleh kerana ia statik, nilainya akan kekal sepanjang panggilan ke foo berikutnya. Semasa penamatan program, pemusnah plonk akan dipanggil, memusnahkan pembolehubah.

Selain itu, untuk setiap program dijalankan, susunan pembinaan dan pemusnahan pembolehubah statik mungkin berbeza-beza, membawa kepada output yang berbeza.

Atas ialah kandungan terperinci Apakah Kelakuan Seumur Hidup dan Permulaan/Penyahinisian Pembolehubah Statik dalam Fungsi C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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