Penggolongan Variabel Menurut Kelas Penyimpanan Bahasa C

Tuesday, January 22, 2019


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

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

Variabel Lokal

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

Dalam banyak literatur, variabel lokal disebut juga dengan variabel otomatis, sehingga sanggup 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); }
 di samping sanggup digolongkan menurut jenis Penggolongan Variabel menurut 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 digunakan oleh suatu fungsi (tidak dimaksudkan untuk digunakan oleh fungsi yang lain). Pada pola diatas, antara variabel I dalam fungsi main() dan fung_1() tidak ada kaitannya, alasannya yakni 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 sanggup 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 sekarang = %d\n", i);     tambah();     printf("Nilai i sekarang = %d\n", i);     tambah();     printf("Nilai i sekarang = %d\n", i);     puts(""); } void tambah(void){     extern int i; //variabel eksternal     i++; }
 di samping sanggup digolongkan menurut jenis Penggolongan Variabel menurut Kelas Penyimpanan Bahasa C
Nilai Variabel Bertambah
Kalau dalam suatu aktivitas terdapat suatu variabel eksternal, maka suatu fungsi (yang ada pada aktivitas yang sama) sanggup saja memakai nama variabel yang sama dengan variabel eksternal, namun diperlakukan sebagai variabel lokal. Untuk lebih jelasnya perhatikan pola aktivitas 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 sekarang = %d\n", i);     tambah();     printf("Nilai i sekarang = %d\n", i);     tambah();     printf("Nilai i sekarang = %d\n", i); } void tambah(void){     int i = 10; //variabel lokal     i++;     printf("Nilai i dalam fungsi tambah() = %d\n", i); }
 di samping sanggup digolongkan menurut jenis Penggolongan Variabel menurut Kelas Penyimpanan Bahasa C
Nilai i Pada Fungsi Tetap

Variabel Statis

Variabel statis sanggup berupa variabel internal (didefinisikan di dalam fungsi) maupun variabel eksternal. Karakteristiknya yakni :
  • Kalau variabel statis bersifat internal, maka variabel hanya dikenal oleh fungsi daerah variabel dideklarasikan
  • Kalau variabel statis bersifat eksternal, maka variabel sanggup dipergunakan oleh semua fungsi yang terletak pada file yang sama, daerah 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 ketika 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); }
 di samping sanggup digolongkan menurut jenis Penggolongan Variabel menurut Kelas Penyimpanan Bahasa C
Nilai y Tetap Ketika Keluar Fungsi

Variabel Register

Variabel register yakni variabel yang nilainya disimpan dalam register dan bukan dalam memori RAM. Variabel yang ibarat ini hanya sanggup 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, alasannya yakni variabel yang dioperasikan pada register mempunyai 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); }
 di samping sanggup digolongkan menurut jenis Penggolongan Variabel menurut Kelas Penyimpanan Bahasa C
Proses Compile Lebih Cepat





Demikian artikel tentang Penggolongan Variabel menurut Kelas Penyimpanan Bahasa C. Jika ada yang ditanyakan, silahkan bertanya di kolom komentar. Semoga bermanfaat :)
Sumber https://wapwibowo.blogspot.com/