Variabel Static Bahasa C dan Fungsinya
Pengenalan Variabel Static
Variabel static adalah jenis variabel yang memiliki tingkat visibilitas dan keberlangsungan yang berbeda dibandingkan dengan variabel lokal dan variabel global. Variabel static dideklarasikan dengan kata kunci static dan umumnya digunakan di dalam fungsi atau blok kode tertentu.#include <stdio.h>
void contohFungsi() {
// Variabel lokal static
static int hitungan = 0;
// Melakukan perubahan
// pada variabel static
hitungan++;
// Menampilkan nilai
// variabel static
printf("Nilai variabel static:
%d\n", hitungan);
}
int main() {
// Memanggil fungsi
// beberapa kali
contohFungsi();
contohFungsi();
contohFungsi();
return 0;}
satu, sebuah variabel static int tetap berada pada memori selama program dijalankan. Sebuah variabel normal atau auto akan dihancurkan memorinya ketika sebuah fungsi memanggil dimana variabel tersebut dideklarasikan ketika telah selesai beroperasi.
Contoh, digunakan static int untuk menghitung angka setiap kali fungsi dipanggil, tetapi pada variabel auto hal ini tidak bisa dilakukan untuk proses penghitungan tersebut.
/* Variabel static pada
bahasa C */
#include<stdio.h>
int fun()
{
static int count = 0;
count++;
return count;
}
int main()
{
printf("%d ", fun());
printf("%d ", fun());
return 0;
}
/* Variabel static pada
bahasa C */
#include<stdio.h>
int fun()
{
int count = 0;
count++;
return count;
}
int main()
{
printf("%d ", fun());
printf("%d ", fun());
return 0;
}
dua, Variabel static mengalokasikan memori pada segmen data, tetapi tidak pada segmen stack.
tiga, Variabel static seperti variabel global diinisialisasi dengan nilai 0 jika tidak diinisialisasi secara eksplisit. Contohnya seperti pada program berikut ini, nilai dari x akan dicetak sebagai 0, jika nilai dari y adalah garbage. Seperti terlihat pada program berikut.
/* Variabel Static Bahasa C */
#include <stdio.h>
int main()
{
static int x;
int y;
printf("%d \n %d", x, y);
}
[some_garbage_value]
empat, Pada bahasa C, variabel static hanya dapat diinisialisasi menggunakan konstanta literal. Contoh, perhatikan kesalahan program berikut pada saat kompilasi.
/* Variabel Static
Bahasa C */
#include<stdio.h>
int initializer(void)
{
return 50;
}
int main()
{
static int i = initializer();
printf(" value of i = %d", i);
getchar();
return 0;
}
9:5: error: initializer element is not constant
static int i = initializer();
^
lima, Variabel static global dan fungsi juga dimungkinkan penerapannya pada bahasa C dan C++. Tujuannya adalah membatasi scope dari variabel atau fungsi menuju sebuah file.
enam, Variabel static tidak seharusnya dideklarasikan di dalam structure. Alasannya, adalah kompilator membutuhkan seluruh elemen structure agar dapat diletakkan bersama dengan alokasi memori untuk anggota structure secara berdekatan. Sangat dimungkinkan untuk mendeklarasikan structure di dalam sebuah fungsi atau segmen stack ataupun alokasi memori dinamis atau segmen heap ataupun juga secara global seperti BSS atau segment data. Apapun bentuk kasusnya, semua anggota struktur harus berada pada segmen memori sama karena nilai untuk elemen structure dengan menghitung elemen offset dari alamat awal dari struktur. Memisahkan satu anggota saja ke segmen data mengalahkan tujuan variabel statis dan dimungkinkan untuk memiliki seluruh structure sebagai statis.
- Keberlangsungan Nilai: Variabel static tetap ada di dalam memori selama program berjalan, dan nilai tersebut akan dijaga dari satu panggilan fungsi ke panggilan fungsi berikutnya. Ini berbeda dengan variabel lokal biasa yang biasanya hilang nilainya setelah fungsi selesai dieksekusi.
- Penghitungan atau Pemeliharaan State: Variabel static dapat digunakan untuk menghitung atau memelihara keadaan di antara panggilan fungsi. Contohnya adalah menghitung jumlah panggilan fungsi atau menyimpan informasi yang memerlukan keberlangsungan di seluruh eksekusi program.
- Pembagian Memori yang Efisien: Dalam beberapa kasus, penggunaan variabel static dapat membantu mengelola dan membagi memori dengan lebih efisien daripada variabel global. Variabel static hanya dapat diakses di dalam lingkup tempat variabel dideklarasikan.
- Kontrol Akses ke Variabel: Penggunaan variabel static membantu membatasi akses ke variabel tersebut hanya di dalam blok kode atau fungsi tertentu. Ini meningkatkan kontrol dan isolasi data di dalam program.
- Keberlangsungan Nilai: Variabel static mempertahankan nilai di antara panggilan fungsi, yang memungkinkan penghitungan atau pemeliharaan state tanpa kehilangan nilai.
- Pembagian Memori yang Efisien: Variabel static hanya dapat diakses di dalam lingkup tempat variabel dideklarasikan, sehingga membantu mengelola memori dengan lebih efisien.
- Kontrol Akses: Dengan menggunakan variabel static, pengembang dapat mengendalikan akses ke variabel tersebut hanya di dalam blok atau fungsi tempat variabel dideklarasikan.
- Pembacaan Awal Nilai Default: Variabel static secara otomatis diinisialisasi dengan nilai default sesuai dengan tipe datanya, jika tidak ada inisialisasi yang diberikan oleh pengembang.
- Kesulitan Dalam Pemeliharaan Program: Penggunaan variabel static dapat meningkatkan kompleksitas program dan membuatnya sulit dipahami. Memelihara state melalui variabel static dapat menyebabkan ketergantungan yang sulit diikuti, terutama dalam program yang besar atau kompleks.
- Ketidakjelasan Pembacaan Nilai Awal: Meskipun variabel static diinisialisasi secara default, pembacaan nilai awal mungkin tidak selalu jelas bagi pengembang yang membaca kode. Ini dapat menyebabkan kebingungan atau kesalahan jika nilai default tersebut tidak disadari.
- Dapat Menyebabkan Kesalahan Data Bersama: Jika variabel static digunakan secara berlebihan, dapat menyebabkan masalah data bersama (shared data) di antara berbagai bagian program. Ini dapat mengakibatkan bug yang sulit ditemukan dan diperbaiki.
- Keterbatasan Dalam Akses Multi-threading: Variabel static dalam fungsi tidak aman untuk penggunaan bersama dalam program multi-threaded. Jika beberapa thread mengakses fungsi yang menggunakan variabel static, perlu dilakukan tindakan pengamanan seperti menggunakan mekanisme mutex.
- Penggunaan Memori yang Tidak Efisien: Meskipun variabel static dapat membantu mengelola memori dengan lebih efisien dalam beberapa kasus, penggunaan yang tidak bijaksana atau berlebihan dapat menyebabkan alokasi memori yang tidak efisien, terutama dalam program yang kompleks.
- Tidak Cocok untuk Rekursi: Variabel static tidak dapat digunakan dengan baik dalam situasi rekursif, di mana fungsi memanggil dirinya sendiri. Variabel static akan menyimpan state antara panggilan rekursif, yang dapat menyebabkan konflik nilai di antara panggilan rekursif tersebut.
- Kemungkinan Ketergantungan Global: Penggunaan variabel static dalam beberapa situasi dapat menyebabkan ketergantungan yang berlebihan pada variabel global, yang dapat mempengaruhi isolasi dan modularitas kode.
- Kemungkinan Kesulitan Dalam Pengujian dan Debugging: Variabel static dapat membuat pengujian dan debugging lebih sulit karena state yang dipertahankan di antara panggilan fungsi. Hal ini dapat menyulitkan pengembang untuk menentukan titik masuk atau keluar dalam suatu fungsi.
Kesimpulan
- Keyword Register Bahasa C dan Fungsinya
- Mencetak dan Menginput Nilai Bahasa C menggunakan Printf dan Scanf
- Getchar dan Putchar Bahasa C Beserta Fungsinya
- Scanset Bahasa C dan Fungsinya
- Mencetak String Bahasa C menggunakan Puts dan Printf
- Printf %n Bahasa C dan Fungsinya
- Mencetak Simbol % Menggunakan Printf Bahasa C
5 komentar untuk "Variabel Static Bahasa C dan Fungsinya"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -
Variabel statis atau static variables adalah variabel yang dapat didefinisikan pada bagian dalam ataupun pada bagian luar dari fungsi yang terdapat pada bahasa C. Variabel tersebut nilainya bersifat lokal sesuai dengan blok tempat pendeklarasiannya. Nilai defaul dari variabel statis adalah nol. Variabel statis akan tetap aktif atau akan tetap dialokasikan memorinya selama program tersebut dijalankan.
BalasHapusApa fungsi dari variabel statis?
BalasHapusVariabel statis adalah jenis variabel yang terkait dengan kelas pendeklarasiannya itu sendiri. Variabel statis digunakan untuk melacak informasi yang berhubungan dengan logika pada bagian keseluruhan kelas atau fungsi pada bahasa C, dimana hal ini berkebalikan dengan nilai variabel yang sifatnya bervariasi dari satu instance terhadap instance lainnya.
HapusOke, maksih infornya, jadi sedikit paham tentang fungsi variabel static
BalasHapusiya sama sama
Hapus