Hayat Pembolehubah Statik dalam Fungsi C
Mengisytiharkan pembolehubah sebagai statik dalam skop fungsi memastikan pengamulaannya sekali sahaja, mengekalkan nilainya merentas seruan fungsi. Memahami jangka hayatnya yang tepat adalah penting.
Bilakah Pembolehubah Statik Dicipta dan Dimusnahkan?
Pembolehubah statik dalam fungsi mempunyai jangka hayat yang menjangkau dari pertemuan pertama dengan pengisytiharannya kepada penamatan program. Ini bermakna:
Penjejakan Pembinaan/Pemusnahan Tertib
Menentukan susunan pembinaan dan pemusnahan pembolehubah statik adalah penting, terutamanya dalam persekitaran berbilang benang. Piawaian menetapkan bahawa pemusnah objek statik dilaksanakan dalam susunan terbalik penyiapan pembinaan.
Contoh Pelaksanaan
Pertimbangkan kod berikut coretan:
struct emitter { string str; emitter(const string& s) : str(s) { cout << "Created " << str << endl; } ~emitter() { cout << "Destroyed " << str << endl; } }; void foo(bool skip_first) { if (!skip_first) static emitter a("in if"); static emitter b("in foo"); } int main(int argc, char*[]) { foo(argc != 2); if (argc == 3) foo(false); }
Output:
C:>sample.exe Created in foo Destroyed in foo C:>sample.exe 1 Created in if Created in foo Destroyed in foo Destroyed in if C:>sample.exe 1 2 Created in foo Created in if Destroyed in if Destroyed in foo
Ini menunjukkan susunan hayat dan pembinaan/pemusnahan pembolehubah statik.
Atas ialah kandungan terperinci Berapa Lama Pembolehubah Statik dalam Fungsi C Hidup?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!