Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Pembolehubah Statik dan Global Dimulakan dalam C?

Bagaimanakah Pembolehubah Statik dan Global Dimulakan dalam C?

DDD
DDDasal
2024-11-08 07:05:021007semak imbas

How are Static and Global Variables Initialized in C  ?

Permulaan Pembolehubah Statik dan Global dalam C

Dalam C , objek statik dan global dengan skop ruang nama dimulakan secara berbeza daripada dalam C. Berikut ialah penjelasan yang komprehensif:

Permulaan Fasa:

C memulakan pembolehubah ini dalam tiga fasa:

  1. Permulaan Sifar: Semua objek statik ditetapkan kepada 0.
  2. Permulaan Statik: Objek dengan pemula statik dimulakan.
  3. Permulaan Dinamik: Objek memerlukan pelaksanaan kod untuk pemulaan (objek bukan statik) dimulakan.

Pemulaan Pembolehubah Diberi:

Dalam coretan kod anda:

  • global_int1 dimulakan kepada 5 semasa statik pemula.
  • global_int2 dimulakan sifar semasa pemulaan sifar.
  • static_int1 dimulakan kepada 4 semasa pemulaan statik.
  • static_int2 dimulakan sifar semasa pemulaan sifar.

Penyimpanan dan Pengurusan Permulaan Nilai:

Semasa penyusunan, nilai permulaan disimpan dalam segmen "data" boleh laku, melainkan ia adalah const. Dalam kes itu, ia diletakkan dalam segmen "teks".

Sistem memuatkan segmen "data" ke dalam ingatan, memulakan pembolehubah statik dengan pemula statik. Pembolehubah tanpa pemula atau pemula dinamik diletakkan dalam segmen "bss", yang disifarkan oleh sistem sebelum pelaksanaan kod.

Nota Tambahan untuk C 11

C 11 memperkenalkan constexpr, membenarkan beberapa fungsi yang ditentukan pengguna menjadi pemula statik. Pembolehubah setempat benang juga diperkenalkan, yang merumitkan lagi prosedur pemula.

Atas ialah kandungan terperinci Bagaimanakah Pembolehubah Statik dan Global Dimulakan dalam 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