Kelas Penyimpanan di C: Auto, Extern, Static, Register (Contoh)
⚡ Ringkasan Cerdas
Kelas penyimpanan dalam bahasa C mendefinisikan cakupan, masa hidup, nilai default, dan lokasi memori setiap variabel, menggunakan empat penentu — auto, register, static, dan extern — untuk mengontrol di mana data berada dan berapa lama data tersebut bertahan selama eksekusi.

Apa itu Kelas Penyimpanan di C?
Kelas penyimpanan mewakili visibilitas dan lokasi variabel. Kelas ini memberi tahu bagian kode mana yang dapat kita akses ke variabel tersebut. Kelas penyimpanan dalam C digunakan untuk menjelaskan hal-hal berikut:
- Ruang lingkup variabel.
- Lokasi dimana variabel akan disimpan.
- Nilai inisialisasi suatu variabel.
- Variabel seumur hidup.
- Siapa yang dapat mengakses variabel?
Jadi kelas penyimpanan digunakan untuk mewakili informasi tentang suatu variabel.
CATATAN: Suatu variabel tidak hanya terkait dengan sebuah tipe data, nilainya tetapi juga kelas penyimpanan.
Apa Jenis Kelas Penyimpanan di C?
Ada total empat jenis kelas penyimpanan standar. Tabel di bawah mewakili kelas penyimpanan di C.
| Kelas penyimpanan | Tujuan |
| mobil | Ini adalah kelas penyimpanan default. |
| luar | Ini adalah variabel global. |
| statis | Ini adalah variabel lokal yang mampu mengembalikan nilai bahkan ketika kontrol ditransfer ke pemanggilan fungsi. |
| daftar | Ini adalah variabel yang disimpan di dalam Register. |
Kelas Penyimpanan Otomatis di C
Variabel yang didefinisikan menggunakan kelas penyimpanan otomatis disebut sebagai variabel lokal. Otomatis adalah singkatan dari kelas penyimpanan otomatis. Variabel berada di kelas penyimpanan otomatis secara default jika tidak ditentukan secara eksplisit.
Cakupan variabel otomatis dibatasi pada blok tertentu saja. Setelah kontrol keluar dari blok, akses dimusnahkan. Ini berarti hanya blok dimana variabel auto dideklarasikan yang dapat mengaksesnya.
Kata kunci auto digunakan untuk mendefinisikan kelas penyimpanan otomatis. Secara default, variabel auto berisi nilai sampah.
Example, auto int age;
Program di bawah ini mendefinisikan suatu fungsi dengan dua variabel lokal
int add(void) { int a=13; auto int b=48; return a+b;}
Kami mengambil program lain yang menunjukkan tingkat visibilitas “tingkat visibilitas” untuk variabel otomatis di setiap kode blok yang independen satu sama lain:
#include <stdio.h> int main( ) { auto int j = 1; { auto int j= 2; { auto int j = 3; printf ( " %d ", j); } printf ( "\t %d ",j); } printf( "%d\n", j);}
Keluaran:
3 2 1
Kelas Penyimpanan Eksternal di C
Extern adalah singkatan dari kelas penyimpanan eksternal. Kelas penyimpanan eksternal digunakan ketika kita memiliki fungsi atau variabel global yang dibagi antara dua file atau lebih.
Kata kunci extern digunakan untuk mendeklarasikan variabel atau fungsi global di file lain untuk memberikan referensi ke variabel atau fungsi yang telah didefinisikan di file asli.
Variabel yang didefinisikan menggunakan kata kunci eksternal disebut sebagai variabel global. Variabel-variabel ini dapat diakses di seluruh program. Perhatikan bahwa variabel eksternal tidak dapat diinisialisasi karena sudah ditentukan dalam file asli.
Example, extern void display();
File Pertama: main.c
#include <stdio.h> extern i; main() { printf("value of the external integer is = %d\n", i); return 0;}
File Kedua: asli.c
#include <stdio.h>
i=48;
Hasil:
value of the external integer is = 48
Untuk mengkompilasi dan menjalankan kode di atas, ikuti langkah-langkah di bawah ini
Langkah 1) Buat proyek baru,
- Pilih Aplikasi Konsol
- Klik Pergi
Langkah 2) Pilih C dan klik Berikutnya
Langkah 3) Klik Berikutnya
Langkah 4) Masukkan detail dan klik Berikutnya
Langkah 5) Klik Selesai
Langkah 6) Masukkan kode utama seperti yang ditunjukkan pada program sebelumnya ke dalam file main.c dan simpan.
Langkah 7) Buat file C baru [File -> baru -> File Kosong, simpan (sebagai original.c) dan tambahkan ke proyek saat ini dengan mengklik “OK” di kotak dialog.
Langkah 8) Masukkan dan simpan kode C dari file .c asli yang ditunjukkan pada contoh sebelumnya tanpa fungsi main().
Langkah 9) Bangun dan jalankan proyek Anda. Hasilnya ditunjukkan pada gambar berikutnya.
Kelas Penyimpanan Statis di C
Variabel statis digunakan dalam fungsi/file sebagai variabel statis lokal. Mereka juga dapat digunakan sebagai variabel global
- Variabel lokal statis adalah variabel lokal yang mempertahankan dan menyimpan nilainya di antara pemanggilan fungsi atau blok dan tetap terlihat hanya oleh fungsi atau blok yang mendefinisikannya.
- Variabel global statis adalah variabel global yang hanya terlihat oleh file tempat variabel tersebut dideklarasikan.
Example: static int count = 10;
Perlu diingat bahwa variabel statis memiliki nilai awal default nol dan diinisialisasi hanya sekali seumur hidupnya.
#include <stdio.h> /* function declaration */ void next(void); static int counter = 7; /* global variable */ main() { while(counter<10) { next(); counter++; } return 0;} void next( void ) { /* function definition */ static int iteration = 13; /* local static variable */ iteration ++; printf("iteration=%d and counter= %d\n", iteration, counter);}
Hasil:
iteration=14 and counter= 7 iteration=15 and counter= 8 iteration=16 and counter= 9
Variabel global dapat diakses di seluruh file sedangkan variabel statis hanya dapat diakses pada bagian tertentu dari suatu kode.
Umur variabel statis ada di seluruh kode program. Variabel yang dideklarasikan atau diinisialisasi menggunakan kata kunci statis selalu berisi nol sebagai nilai default.
Daftarkan Kelas Penyimpanan di C
Anda dapat menggunakan kelas penyimpanan register ketika Anda ingin menyimpan variabel lokal di dalam fungsi atau blok di register CPU RAM untuk memiliki akses cepat ke variabel-variabel ini. Misalnya, “counter” adalah kandidat yang baik untuk disimpan dalam register.
Example: register int age;
Kata kunci `register` digunakan untuk mendeklarasikan kelas penyimpanan register. Variabel yang dideklarasikan menggunakan kelas penyimpanan register memiliki masa berlaku sepanjang program.
Ini mirip dengan kelas penyimpanan otomatis. Variabelnya terbatas pada blok tertentu. Satu-satunya perbedaan adalah variabel yang dideklarasikan menggunakan kelas penyimpanan register disimpan di dalam register CPU, bukan di memori. Register mempunyai akses yang lebih cepat dibandingkan dengan memori utama.
Variabel yang dideklarasikan menggunakan kelas penyimpanan register tidak memiliki nilai default. Variabel-variabel ini sering kali dideklarasikan pada awal program.
#include <stdio.h> /* function declaration */ main() { {register int weight; int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/} }
Keluaran:
error: address of register variable 'weight' requested
Tabel berikutnya merangkum fitur utama setiap kelas penyimpanan yang umum digunakan dalam pemrograman C
| Kelas Penyimpanan | Pernyataan | Storage | Nilai Awal Default | Cakupan | Lifetime |
| mobil | Di dalam fungsi/blok | Memori | Unpredictable | Di dalam fungsi/blok | Di dalam fungsi/blok |
| daftar | Di dalam fungsi/blok | Register CPU | Sampah | Di dalam fungsi/blok | Di dalam fungsi/blok |
| luar | Di luar semua fungsi | Memori | Nol | Seluruh file dan file lain yang variabelnya dideklarasikan sebagai eksternal | waktu berjalan program |
| Statis (lokal) | Di dalam fungsi/blok | Memori | Nol | Di dalam fungsi/blok | waktu berjalan program |
| Statis (global) | Di luar semua fungsi | Memori | Nol | Aksi | waktu berjalan program |








