Rumah >pembangunan bahagian belakang >C++ >Di manakah pembolehubah statik disimpan dalam C/C++?
Pembolehubah statik ialah pembolehubah yang kekal dalam ingatan semasa program berjalan, iaitu kitaran hayatnya ialah masa keseluruhan program berjalan. Ini tidak seperti pembolehubah automatik, yang hanya kekal dalam ingatan semasa fungsi sedang berjalan dan dimusnahkan apabila fungsi tamat.
Pembolehubah statik disimpan dalam segmen data memori. Segmen data adalah sebahagian daripada ruang alamat maya program.
Semua pembolehubah statik yang tidak dimulakan secara eksplisit atau dimulakan kepada sifar disimpan dalam segmen data yang tidak dimulakan (juga dipanggil segmen data yang tidak dimulakan). segmen BSS). Sebaliknya, pembolehubah statik yang dimulakan disimpan dalam segmen data yang dimulakan.
Contohnya adalah seperti berikut-
static int x = 5; static int y; The static variable x is stored in the initialized data segment and the static variable y is stored in the BSS segment.
Program untuk menunjukkan pembolehubah statik bahasa C adalah seperti berikut-
#include<stdio.h> int func(){ static int i = 4 ; i++; return i; } int main(){ printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); return 0; }
Keluaran program di atas adalah seperti berikut -
5 6 7 8 9 10
Sekarang mari kita fahami program di atas.
Dalam fungsi func(), i ialah pembolehubah statik yang dimulakan kepada 4. Oleh itu ia disimpan dalam segmen data permulaan. Kemudian i dinaikkan dan nilainya dikembalikan. Coretan kod yang menunjukkan ini adalah seperti berikut -
int func(){ static int i = 4 ; i++; return i; }
Dalam fungsi main(), fungsi func() dipanggil 6 kali dan ia mengembalikan nilai i yang dicetak. Oleh kerana i ialah pembolehubah statik, ia kekal dalam ingatan dan memberikan nilai yang konsisten semasa program sedang berjalan. Coretan kod yang menunjukkan ini adalah seperti berikut -
printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func()); printf("%d\n", func());
Atas ialah kandungan terperinci Di manakah pembolehubah statik disimpan dalam C/C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!