Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C


Suatu variabel, di samping dapat digolongkan berdasarkan jenis/tipe data juga dapat diklasifikasikan berdasarkan kelas penyimpanan (storage class).

Penggolongan berdasarkan kelas penyimpanan berupa :
  • variabel lokal/auto
  • variabel eksternal/global
  • variabel statis
  • variabel register

Variabel Lokal

Variabel lokal adalah variabel yang dideklarasikan dalam sebuah fungsi. Karakteristik variabel lokal adalah :
  • secara otomatis diciptakan ketika fungsi dipanggil dan akan sirna (lenyap) ketika eksekusi terhadap fungsi berakhir.
  • Hanya dikenal oleh fungsi tempat variabel tersebut dideklarasikan.
  • Tidak ada inisialisasi secara otomatis (saat variabel diciptakan, nilainyatak menentu).

Dalam banyak literatur, variabel lokal disebut juga dengan variabel otomatis, sehingga bisa dideklarasikan dengan menambahkan kata kuci auto di depan tipe data variabel.

Kata kunci ini bersifat opsional, biasanya disertakan sebagai penjelas saja.
#include <stdio.h>
void fung_1(void); //deklarasi fungsi

main(){
    int i = 20; //variabel lokal
    fung_1();
    printf("nilai i di dalam main() = %d\n", i);
}

void fung_1(void) {
    int i = 11; //variabel lokal
    printf("nilai i di dalam fung_1() = %d\n", i);
}
Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C
Nilai Keluaran Variabel i Berbeda
Pada fung_1(), deklarasi int x; dapat ditulis menjadi auto int x;. Penerapan variabel lokal yaitu bila variabel hanya dipakai oleh suatu fungsi (tidak dimaksudkan untuk dipakai oleh fungsi yang lain). Pada contoh diatas, antara variabel I dalam fungsi main() dan fung_1() tidak ada kaitannya, sebab masing-masing merupakan variabel lokal.

Variabel Eksternal

Variabel eksternal merupakan variabel yang dideklarasikan di luar fungsi. Karakteristiknya adalah:
  • dapat diakses oleh semua fungsi.
  • kalau tak diberi nilai, secara otomatis diinisialisasi dengan nilai sama dengan nol.
variabel eksternal haruslah dideklarasikan sebelum definisi dari fungsi yang akan mempergunakannya.

Untuk memperjelas bahwa suatu variabel dalam fungsi merupakan variabel eksternal, di dalam fungsi yang menggunakannya dapat mendeklarasikan variabel itu kembali dengan menambahkan kata kunci extern di depan tipe data variabel.
#include <stdio.h>
int i; //deklarasi variabel eksternal
void tambah(void);

main(){
    extern int i; //variabel eksternal
 
    printf("Nilai awal i = %d\n", i);
    i += 7;
    printf("Nilai i kini = %d\n", i);
    tambah();
    printf("Nilai i kini = %d\n", i);
    tambah();
    printf("Nilai i kini = %d\n", i);
    puts("");
}
void tambah(void){
    extern int i; //variabel eksternal
    i++;
}
Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C
Nilai Variabel Bertambah
Kalau dalam suatu program terdapat suatu variabel eksternal, maka suatu fungsi (yang ada pada program yang sama) bisa saja menggunakan nama variabel yang sama dengan variabel eksternal, namun diperlakukan sebagai variabel lokal. Untuk lebih jelasnya perhatikan contoh program berikut ini.
#include <stdio.h>
int i = 273; //deklarasi variabel eksternal
void tambah(void);

main(){
    extern int i; //variabel eksternal
    printf("Nilai awal i = %d\n", i);
    i += 7;
    printf("Nilai i kini = %d\n", i);
    tambah();
    printf("Nilai i kini = %d\n", i);
    tambah();
    printf("Nilai i kini = %d\n", i);
}
void tambah(void){
    int i = 10; //variabel lokal
    i++;
    printf("Nilai i dalam fungsi tambah() = %d\n", i);
}
Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C
Nilai i Pada Fungsi Tetap

Variabel Statis

Variabel statis dapat berupa variabel internal (didefinisikan di dalam fungsi) maupun variabel eksternal. Karakteristiknya adalah :
  • Kalau variabel statis bersifat internal, maka variabel hanya dikenal oleh fungsi tempat variabel dideklarasikan
  • Kalau variabel statis bersifat eksternal, maka variabel dapat dipergunakan oleh semua fungsi yang terletak pada file yang sama, tempat variabel statis dideklarasikan
  • Berbeda dengan variabel lokal, variabel statis tidak akan hilang sekeluarnya dari fungsi (nilai pada variabel akan tetap diingat).
  • Inisialisasi akan dilakukan hanya sekali, yaitu saat fungsi dipanggil yang pertama kali. Kalau tak ada inisialisasi oleh pemrogram secara otomatis akan diberi nilai awal nol
Variabel statis diperoleh dengan menambahkan kata kunci static di depan tipe data variabel.
#include <stdio.h>
void fung_y(void);

main(){
    int y = 20;
    fung_y();
    printf("Nilai y dalam main() = %d\n", y);
    fung_y();
    printf("Nilai y dalam main() = %d\n", y);
}

void fung_y(void){
    static int y; //variabel static, nilai tetap ketika keluar fungsi
    y++;
    printf("Nilai y dalam fung_y() = %d\n", y);
}
Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C
Nilai y Tetap Ketika Keluar Fungsi

Variabel Register

Variabel register adalah variabel yang nilainya disimpan dalam register dan bukan dalam memori RAM. Variabel yang seperti ini hanya bisa diterapkan pada variabel yang lokal atau parameter formal, yang bertipe char atau int.

Variabel register biasa diterapkan pada variabel yang digunakan sebagai pengendali loop. Tujuannya untuk mempercepat proses dalam loop, sebab variabel yang dioperasikan pada register memiliki kecepatan yang jauh lebih tinggi daripada variabel yang diletakkan pada RAM.
#include <stdio.h>
main(){
   register int i;
   int jumlah = 0;
   for(i = 1; i <= 1000000; i++) {
      jumlah = jumlah + i;
   }
   printf("1 + 2 + 3 + ... + 1000000 = %d\n", jumlah);
}
Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C
Proses Compile Lebih Cepat





Demikian artikel tentang Penggolongan Variabel berdasarkan Kelas Penyimpanan Bahasa C. Jika ada yang ditanyakan, silahkan bertanya di kolom komentar. Semoga bermanfaat :)

"Setiap teknologi memiliki resiko yang dapat menghancurkan kehidupan. Tapi kita juga memerlukan teknologi tersebut untuk membangun kehidupan yang lebih baik."

Related Posts

Previous
Next Post »
Load comments

Ketentuan Komentar !!!
------------------------------
1. Komentar sesuai dengan artikel di atas
2. Komentar SPAM otomatis di blokir dan tidak akan dimunculkan
3. Komentar meninggalkan link aktif otomatis terhapus
4. Berkomentar dengan etika

Terima kasih atas komentarnya, semoga postingan di atas bermanfaat :)