Latest web development tutorials

kelas penyimpanan C

Kelas penyimpanan variabel Program definisi C / rentang (visibilitas) fungsi dan siklus hidup. specifier ini ditempatkan sebelum mereka mengubah jenis. Di bawah ini adalah penyimpanan kelas C yang tersedia dalam program ini:

  • mobil
  • daftar
  • statis
  • extern

kelas penyimpanan auto

kelas penyimpananotomatis semua kelas variabel penyimpanan default lokal.

{
   int mount;
   auto int month;
}

Contoh di atas mendefinisikan dua variabel dengan kelas penyimpanan yang sama, otomatis hanya dapat digunakan dalam fungsi, yaitu auto hanya memodifikasi variabel lokal.

mendaftar kelas penyimpanan

mendaftar kelas penyimpanan digunakan untuk mendefinisikan disimpan dalam register bukannya RAM di variabel lokal.Ini berarti bahwa ukuran maksimum dari variabel sama dengan ukuran register (biasanya kata), dan tidak dapat diterapkan untuk itu unary '&' operator (karena tidak memiliki lokasi memori).

{
   register int  miles;
}

Butuh hanya mendaftar untuk akses cepat ke variabel, seperti counter. Hal ini juga harus dicatat bahwa definisi 'daftar' tidak berarti variabel yang akan disimpan dalam register, itu berarti bahwa variabel dapat disimpan dalam register, tergantung pada keterbatasan hardware dan implementasi.

kelas penyimpanan statis

statis kelas penyimpanan menginstruksikan compiler untuk menjaga keberadaan variabel lokal dalam siklus hidup program, tanpa perlu memasukkannya setiap kali Anda pergi keluar dari ruang lingkup dan diciptakan dan dihancurkan.Oleh karena itu, penggunaan variabel lokal statis dapat dimodifikasi untuk mempertahankan nilai variabel lokal antara fungsi panggilan.

pengubah statis dapat diterapkan untuk variabel global. Ketika dimodifikasi variabel global statis, variabel akan membatasi ruang lingkup pernyataan di file-nya.

Pemrograman di C, bila digunakan pada anggota datastatis kelas, semua benda akan menghasilkan hanya satu salinan dari anggota kelas dibagi.

#include <stdio.h>
 
/* 函数声明 */
void func(void);
 
static int count = 5; /* 全局变量 */
 
main()
{
   while(count--)
   {
      func();
   }
   return 0;
}
/* 函数定义 */
void func( void )
{
   static int i = 5; /* 局部静态变量 */
   i++;

   printf("i is %d and count is %d\n", i, count);
}

Mungkin Anda masih tidak dapat memahami hal ini, karena saya telah menggunakan fungsi dan variabel global, kedua konsep ini sejauh ini tidak menjelaskan. Bahkan jika Anda tidak sepenuhnya mengerti, itu tidak masalah, bab-bab berikutnya kita akan menjelaskan secara rinci. Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

i is 6 and count is 4
i is 7 and count is 3
i is 8 and count is 2
i is 9 and count is 1
i is 10 and count is 0

kelas penyimpanan extern

kelas penyimpananextern digunakan untuk memberikan referensi ke variabel global, variabel global untuk semua file program yang terlihat.Bila Anda menggunakan 'extern', yang tidak bisa menginisialisasi variabel, nama variabel akan mengarah ke lokasi penyimpanan yang ditetapkan sebelumnya.

Bila Anda memiliki beberapa dokumen dan mendefinisikan variabel global atau fungsi yang dapat digunakan dalam dokumen lainnya, Anda dapat menggunakanexterndi file lain untuk mendapatkan referensi variabel atau fungsi yang didefinisikan. Hal ini dapatdipahami,extern digunakan untuk mendeklarasikan variabel global atau fungsi dalam file lain.

pengubah extern biasanya digunakan ketika ada dua atau lebih file berbagi variabel global yang sama atau fungsi dari waktu, sebagai berikut:

file pertama: main.c

#include <stdio.h>
 
int count ;
extern void write_extern();
 
main()
{
   count = 5;
   write_extern();
}

Kedua berkas: support.c

#include <stdio.h>
 
extern int count;
 
void write_extern(void)
{
   printf("count is %d\n", count);
}

Di sini, kedua kata kunci berkasexterndigunakan untukmenghitungdalam pernyataan pertama telah ditetapkan dalam main.c. berkas Sekarang, kompilasi kedua file, sebagai berikut:

 $gcc main.c support.c

Ini akan menghasilkana.out program dieksekusi, ketika program dijalankan, akan menghasilkan hasil sebagai berikut:

5