Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Memahami Kelas Penyimpanan C: Lingkup, Umur, dan Kinerja

Memahami Kelas Penyimpanan C

Jelajahi bagaimana kelas penyimpanan automatic, external, static, dan register mendefinisikan lingkup, umur, dan kinerja variabel dalam C.

Variabel Automatic (Lokal)

Variabel yang dideklarasikan di dalam blok adalah automatic, juga dikenal sebagai variabel lokal. Mereka hanya ada di dalam blok tersebut dan dihancurkan saat blok berakhir.

#include <stdio.h> int main(void) { for (int i = 0; i < 5; ++i) { printf("C programming\n"); } // Kesalahan: i tidak dideklarasikan dalam cakupan ini printf("%d", i); return 0; } 

Menjalankan program ini menghasilkan kesalahan undeclared identifier i karena i hanya dideklarasikan di dalam blok loop for.

int main() { int n1; // lokal ke main() } void func() { int n2; // lokal ke func() } 

Di sini, n1 tidak dapat diakses di dalam func(), dan n2 tidak dapat diakses di dalam main().

Variabel Global (External)

Variabel yang dideklarasikan di luar semua fungsi adalah global atau external. Mereka dapat diakses dari setiap fungsi dalam unit terjemahan yang sama. Ketika variabel global didefinisikan dalam satu berkas tetapi digunakan dalam berkas lain, kata kunci extern menunjukkan bahwa definisinya berada di tempat lain.

Contoh: Variabel Global

#include <stdio.h> void display(); int n = 5; // variabel global int main() { ++n; display(); return 0; } void display() { ++n; printf("n = %d\n", n); } 

Output

n = 7

Jika n didefinisikan dalam file1.c dan digunakan dalam file2.c, tambahkan extern int n; di bagian atas file2.c untuk menghindari kesalahan kompilasi.

Variabel Register

Kata kunci register memberitahu kompiler agar menyimpan variabel dalam register CPU untuk mempercepat akses. Kompiler modern melakukan optimisasi yang agresif, seringkali membuat petunjuk ini tidak diperlukan. Gunakan register hanya ketika profil menunjukkan bottleneck kritis pada sistem tertanam.

Variabel Statis

Variabel statis dideklarasikan dengan static dan mempertahankan nilainya selama seluruh eksekusi program. Mereka diinisialisasi hanya sekali, saat startup program, dan tetap ada sampai program berakhir.

Contoh: Variabel Statis

#include <stdio.h> void display(); int main() { display(); display(); } void display() { static int c = 1; c += 5; printf("%d ", c); } 

Output

6 11

Pada pemanggilan pertama, c diinisialisasi ke 1, lalu ditingkatkan menjadi 6. Pada pemanggilan kedua, c mempertahankan nilai sebelumnya sebesar 6, ditingkatkan menjadi 11, dan dicetak.

Pada cakupan berkas, deklarasi static memberikan variabel tautan internal, sehingga tidak terlihat oleh unit terjemahan lain—fitur yang berguna untuk enkapsulasi.

Menurut standar ISO C, perilaku static memastikan satu instance di seluruh pemanggilan fungsi, yang kritis untuk operasi berstatus tanpa pencemaran global.

Bahasa C

  1. Menguasai Variabel dan Tipe Data Primitif C#: Panduan Lengkap
  2. Memahami Cakupan Variabel C#: Tingkat Kelas, Metode, dan Blok
  3. Kata Kunci Static C#: Menguasai Variabel, Metode, dan Kelas Statis
  4. Menguasai Template Kelas C++: Panduan Praktis
  5. Variabel, Konstanta, dan Literal C: Panduan Lengkap
  6. Variabel dan Tipe Data C++: Panduan Ahli untuk int, double, char, string, bool
  7. Memahami Tipe Variabel Java: Panduan Komprehensif
  8. Memahami Variabel dalam C: Tipe, Aturan Penamaan, dan Manajemen Memori
  9. Memahami Kelas Penyimpanan C: Lingkup, Umur, dan Penggunaan
  10. Memahami Aturan Lingkup C: Variabel Lokal, Global, dan Formal