Static keyword adalah keyword yang memiliki banyak fungsi berdsarkan penempatanya, kali ini penulis akan menjelaskan mengenai Static keyword pada lokal variabel yang biasa disebut sebagai Static Duration Variable.
Penjelasan Static Duration Variabel
Static Duration Variable adalah lokal variabel yang menggunakan keyword static. membuat variabel tersebut akan tetap hidup (ada) dan tidak menghilangkan nilai di dalamnya, karena Static Duration Variable tidak terpengaruh oleh lingkungan (ruang linkup), meskipun block/ruang lingkup tersebut tersebut telah berakhir, variabel tersebut tetap akan ada dan tetap mempertahankan data yang variabel itu simpan.
Pada artikel lokal variabel dijelaskan bahwa, lokal variabel yang tidak menggunakan keyword static, akan memiliki sifat Automatic duration. Yang memiliki arti bahwa setiap deklarasi lokal variabel hanya akan ada pada saat CPU itu berada di dalam ruang lingkup dari lokal variabel tersebut.
Setiap variabel yang berada di dalam suatu block disebut sebagai lokal variabel. ketika CPU memasuki block tersebut maka setiap deklarasi yang berada di dalam block tersebut akan di buat pada saat itu juga, ketika CPU keluar dari block tersebut maka semua deklarasi di dalamnya akan dihapus.
Tapi lokal variabel akan memiliki sifat yang berbeda jika kita menambahkan keyword static pada awal dari deklarasi variabel lokal. Keyword static akan mengubah sifat dari variabel lokal yang tadinya memiliki sifat Automatic duration variabel menjadi Static duration variabel.
Contoh penulisan
static int s_hitung = 0; int static s_hitung = 0;
peletakan keyword static diletakan sebelum identitas dari variabel dan dapat dilakukan sebelum atau sesudah tipe data.
Ketika CPU memasuki Block yang terdapat Static duration variabel untuk pertama kalinya, maka static variabel akan diciptakan untuk pertama kalinya dan hanya untuk satu kali. Ketika eksekusi dari block tersebut berakhir maka hanya static variabel lah yang tidak di hapus.
Ketika CPU memasuki block itu lagi, maka CPU akan menggunakan static variabel yang sudah diciptakan. Static duration variabel akan terus ada bersama dengan isi dari static duration variabel tersebut, hingga akhir dari keseluruhan program.
Contoh program
#include <iostream> using namespace std; void myFunction(); int main(){ myFunction(); myFunction(); myFunction(); myFunction(); myFunction(); return 0; } void myFunction(){ int hitung = 0; static int s_hitung = 0; //Static Variable cout<<"int hitung = "<<++hitung<<endl; cout<<"static int s_hitung = "<<++s_hitung<<endl<<endl; }
Di atas adalah contoh program penggunaa keyword static beserta bukti mengenai sifat dari static. Di atas didirikan function kustom myFunction()
yang di dalamnya didirikan dua variabel hitung
dan s_hitung
dan salah satunya adalah Static Variable, yaitu s_hitung
. dan pada baris berikutnya masih di dalam definisi myFunction()
terdapat perintah penambahaan di dalam perintah keluaran.
Pada main function kita tuliskan perintah pemanggilan function myFunction()
sebanyak 5 kali. Dan hasil dari program di atas adalah variabel biasa yang kita dirikan tanpa static di dalam function myFunction()
, memiliki nilai yang sama di setiap pemanggilan, berbeda dengan static variabel yang memiliki nilai yang selalu meningkat.
Maksud block di sini bukan merupakan function, tapi semua block yang menggunakan sepasang tanda {
dan }
. Function menggunakan block hanya untuk pembatas dari definisi function. dan di bawah ini adalah program yang menggunakan static variabel di dalam block perulangan for.
Contoh program
#include <iostream> using namespace std; int main(){ for (int i=0;i<10;i++){ int hitung=0; static int s_hitung; //Static Variable cout<<"int hitung = "<<++hitung<<endl; cout<<"static int s_hitung = "<<++s_hitung<<endl<<endl; } return 0; }
Pernyataan dari Static duration variabel akan tetap hidup saat block telah berakhir, bukan berarti juga dapat di gunakan di luar block setelah terciptanya variabel static tersebut, variabel tersebut tetap hanya dapat di gunakan di dalam blocknya saja.
Jika static variabel tidak di inisialisasi, Keyword Static akan otomatis melakukan inisialisasi pada variable yang menggunakan static keyword, menjadi memiiki nilai awal .
Hello, after reading this amazing article i am as well glad to share my know-how here with mates.