Thursday, April 24, 2014

Variabel statis C++

Variabel statis adalah variabel yang menempati ruang memori komputer secara permanen, artinya nilai terakhir dari variabel ini akan terus di simpan. Dalam C++, untuk menyatakan variabel statis adalah dengan menggunakakn kata kunci static. Bentuk umum pendeklarasiannya adalah :

static tipe_data nama_variabel;

Untuk mengetahui lebih jauh mengenai variabel statis, perhatikan dua program di bawah ini :
a. Menggunakan variabel biasa
#include <iostream>
#include <stdlib.h>

using namespace std;

//Membuat fungsi dengan nama contoh
int contoh()
{
 int A = 0;
 
 A = A + 10;
 return A;
}

int main()
{
 int x, y, z;
 
 x = contoh();
 y = contoh();
 z = contoh();
 
 //Menampilkan nilai yang telah di proses di dalam fungsi
 cout<<"Nilai fungsi pemanggilan pertama = "<<x<<endl;
 cout<<"Nilai fungsi pemanggilan kedua = "<<y<<endl;
 cout<<"Nilai fungsi pemanggilan ketiga = "<<z<<endl;
 
 system("Pause");
 return 0;
}

Hasil yang akan diperoleh :
Nilai fungsi pada pemanggilan pertama = 10
Nilai fungsi pada pemanggilan kedua = 10
Nilai fungsi pada pemanggilan ketiga = 10

b. Menggunakan variabel statis
#include <iostream>
#include <stdlib.h>

using namespace std;

//Membuat fungsi dengan nama contoh
int contoh()
{
 static int A = 0; //Menggunakan variabel statis
 
 A = A + 10;
 return A;
}

int main()
{
 int x, y, z;
 
 x = contoh();
 y = contoh();
 z = contoh();
 
 //Menampilkan nilai yang telah di proses di dalam fungsi
 cout<<"Nilai fungsi pemanggilan pertama = "<<x<<endl;
 cout<<"Nilai fungsi pemanggilan kedua = "<<y<<endl;
 cout<<"Nilai fungsi pemanggilan ketiga = "<<z<<endl;
 
 system("Pause");
 return 0;
}
Hasil yang akan diperoleh :
Nilai fungsi pada pemanggilan pertama = 10
Nilai fungsi pada pemanggilan kedua = 20
Nilai fungsi pada pemanggilan ketiga = 30

Jika kita amati hasil program di atas, nilai dari setiap pemanggilan fungsi akan memberikan hasil yang berbeda. Konsepnya sederhana, yaitu pada pemanggilan fungsi yang pertama kali pada variabel A masih bernilai 0 (sesuai dengan inisialisasi). Fungsi akan menambahkan nilai tersebut dengan 10, maka nilai yang dikembalikan fungsi contoh() adalah 10. Sampai disini, karena variabel A adalah variabel statis maka pada saat pemanggilan fungsi yang kedua, variabel A masih menyimpan nilai 10, bukan 0. Dengan demikian pemanggilan fungsi kedua tentu akan menampilkan nilai nilai A dengan nilai 10, sehingga nilai yang di kembalikan adalah 20, begitu seterusnya.