Rumah >pembangunan bahagian belakang >C++ >Apakah Proses Permulaan untuk Pembolehubah Statik dan Global dalam C dan C?

Apakah Proses Permulaan untuk Pembolehubah Statik dan Global dalam C dan C?

DDD
DDDasal
2024-11-05 20:22:021060semak imbas

What is the Initialization Process for Static and Global Variables in C and C  ?

Bilakah Pembolehubah Statik dan Global Dimulakan dalam C dan C ?

Dalam C dan C , pembolehubah statik dan global mempunyai prosedur permulaan yang berbeza. Tidak seperti C , di mana objek statik dan global menjalani pembinaan sebelum fungsi utama, C tidak mempunyai permulaan sedemikian.

Pemasaan Permulaan dalam C

Dalam kod C, pembolehubah global seperti global_int1 dan global_int2, yang tidak mempunyai pemula eksplisit, dimulakan kepada 0 oleh sistem. Walau bagaimanapun, pembolehubah statik static_int1 dan static_int2 tidak dimulakan. Nilainya kekal tidak tentu sehingga ditetapkan secara eksplisit dalam program.

Nilai Permulaan dalam C

Pembolehubah dengan pemula eksplisit, seperti global_int1 dengan nilai 5, diberikan nilainya oleh pengkompil sebagai sebahagian daripada terjemahan kod. Nilai ini disimpan dalam segmen data fail boleh laku.

Setelah pelaksanaan program, sistem memuatkan fail boleh laku ke dalam memori, termasuk segmen data. Pembolehubah global kemudiannya diperuntukkan memori dan dimulakan dengan nilai yang disimpan dalam segmen data.

Fasa Permulaan dalam C

C mengikuti proses pemulaan tiga fasa untuk statik objek dengan skop ruang nama:

  1. Permulaan Sifar: Semua objek statik pada mulanya ditetapkan kepada 0.
  2. Permulaan Statik: Objek dengan statik pemulaan (cth., static_int1) diberikan nilainya.
  3. Permulaan Dinamik: Objek dengan pemulaan dinamik (cth., static_int2 atau global_int2 jika tidak dimulakan dalam C ) dimulakan pada masa jalan melalui

Pengurusan Memori dalam C

Nilai permulaan statik dalam C disimpan dalam segmen data fail boleh laku. Sama seperti C, nilai ini dimuatkan ke dalam ingatan semasa pelaksanaan program dan diberikan kepada pembolehubah masing-masing.

Pembolehubah tanpa pemula atau dengan permulaan dinamik diperuntukkan memori dalam segmen bss. Sistem memulakan pembolehubah ini kepada 0 sebelum pelaksanaan program.

Atas ialah kandungan terperinci Apakah Proses Permulaan untuk Pembolehubah Statik dan Global dalam C dan 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