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.
No comments:
Post a Comment