Rumah > pembangunan bahagian belakang > C++ > Berapa Lama Pembolehubah Statik dalam Fungsi C Hidup?

Berapa Lama Pembolehubah Statik dalam Fungsi C Hidup?

Patricia Arquette
Lepaskan: 2024-12-30 14:03:22
asal
1012 orang telah melayarinya

How Long Do Static Variables in C   Functions Live?

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:

  • Pembina dipanggil semasa pengisytiharan awal.
  • Pemusnah dipanggil semasa penamatan atur cara atau apabila pembolehubah keluar dari skop (cth., keluar fungsi).

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);
}
Salin selepas log masuk

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

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!

sumber:php.cn
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