7.12. Variabel Static Local
Jika suatu fungsi dipanggil lebih dari satu kali dalam sebuah program, maka nilai yang disimpan dalam fungsi sebagai variabel lokal tidak akan kuat menahan panggilan fungsi. Hal ini disebabkan karena variabel- variabel yang hancur ketika fungsi diakhiri dan kemudian kembali dibuat bila fungsi sudah dimulai lagi. Hal ini ditunjukkan dalam Program 7.20 dibawah ini: . Program 7.20
#include<iostream> usingnamespacestd; //Fungsiprototipe voidshowLocal(); intmain() { showLocal(); showLocal(); return0; } voidshowLocal() { intlocalNum=5;//variabelLocal cout<<"localNumadalaj"<<localNum<<endl; localNum=99 ;
Keluaran Program adalah sebagai berikut: localNumis5 localNumis5 Walaupun pernyataan terakhir dalam fungsi showLocal took 99 pada localNum, variabel yang hancur bila fungsi kembali. Pada saat fungsi tersebut dipanggil, localNum akan recreated dan diinisialisasi ke 5 lagi. Kadang-kadang keinginan untuk sebuah program untuk "mengingat" adalah nilai yang disimpan dalam variabel lokal antara fungsi panggilan. Hal ini dapat dicapai dengan membuat variabel statis. variabel Static adalah variable lokal yang tidak hancur bila fungsi kembali. Mereka ada untuk seluruh masa program, walaupun mereka hanya lingkup fungsi mereka yang ditetapkan. Program 7.21 menunjukkan beberapa karakteristik statik lokal variabel. Program 7.21
#include<iostream> usingnamespacestd; //Fungsiprototipe voidshowStatic(); intmain() { for(intcount=0;count<5;count++) showStatic(); return0; } voidshowStatic() { staticintstatNum;//Staticlocalvariable cout<<"statNumadalah"<<statNum<<endl; statNum++; }
Program diatas terdapat variabel statNum adalah di tambahkan dengan satu (incremented) pada fungsi showStatic, dan tetap dengan nilai antara setiap panggilan fungsi. Perhatikan bahwa walaupun tidak secara eksplisit statNum diinisialisasi, dimulai pada nol. Seperti variabel global adalah variabel lokal statik diinisialisasi ke nol secara default. Jika Anda memberikan nilai initialization statis variabel lokal, hanya dilakukan sekali initialization. Hal ini biasanya terjadi karena variabel inisialisasi dibuat, dan variabel lokal statik hanya dibuat sekali saat menjalankan sebuah program. program dibawah hanya sedikit modifikasi. Program 7.22
#include<iostream> usingnamespacestd; voidshowStatic(); intmain() { for(intcount=0;count<5;count++) showStatic(); return0; } voidshowStatic(void) { staticintstatNum=5; cout<<"statNumadalah"<<statNum<<endl; statNum++; }
Keluaran program diatas adalah sebagai berikut: statNumadalah5 statNumadalah6 statNumadalah7 statNumadalah8 statNumadalah9 Walaupun pernyataan yang digunakan utuk mendefinisikan inisialisasi statNum ke 5, initialization tidak terjadi pada setiap kali fungsi dipanggil. Jika tidak, variabel y tidak dapat mempertahankan nilai-nya antara fungsi panggilan.
Next read ON halaman 14.