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);
}
Nilai Keluaran Variabel i Berbeda |
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++;
}
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);
}
Nilai i Pada Fungsi Tetap |
Variabel Statis
Variabel statis dapat berupa variabel internal (didefinisikan di dalam fungsi) maupun variabel eksternal. Karakteristiknya adalah :
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);
}
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);
}
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 :)
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 :)