Rumah > pembangunan bahagian belakang > C++ > Di manakah pembolehubah statik disimpan dalam C/C++?

Di manakah pembolehubah statik disimpan dalam C/C++?

王林
Lepaskan: 2023-09-15 21:09:03
ke hadapan
1355 orang telah melayarinya

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

Program untuk menunjukkan pembolehubah statik bahasa C adalah seperti berikut-

Contoh

#🎜 🎜# Demonstrasi langsung#🎜 🎜#
#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;
}
Salin selepas log masuk

Keluaran program di atas adalah seperti berikut -

5
6
7
8
9
10
Salin selepas log masuk

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

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

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!

Label berkaitan:
sumber:tutorialspoint.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan