Variabel Automatik dan Variabel Statik

Variabel Automatik

Istilah automatik dan statik menjelaskan apa yang terjadi pada suatu variabel lokal dalam suatu fungsi sesaat setelah fungsi ini selesai dipanggil dan eksekusi program kembali ke prosedur yang memanggil. Default dari variabel lokal dalam suatu fungsi adalah automatik artinya variabel lokal tersebut dihapus pada saat fungsi selesai dipanggil. Untuk mendefinisikan suatu variabel automatik, tambahkan awalan auto pada deflnisi variabel tersebut. Karena default dari variabel lokal adalah automatik maka awalan auto ini optional, jadi boleh dihilangkan misalnya:

void fungsi_x()

{

int  x;

auto float y;

.

.

.

}

Variabel lokal x dan y dalam fungsi fungsi_x() adalah variabel lokal automatik, karena opsional tambahan awalan auto ini jarang dipakai.

Variabel lokal automatik dalam suatu fungsi hilang pada saat fungsi tersebut berakhir. Kebalikan dari variabel automatik adalah variabel statik yailu tidak dihapus pada saat fungsi berakhir. Variabel statik tidak harus lokal, semua variabel global adalah statik.

Variabel Statik

Untuk membuat suatu variabel lokal statik, tambahkan awalan static pada definisi variabel lokal tersebut. Variabel lokal statik tidak kehilangan nilainya pada saat fungsi berakhir dan tetap lokal dalam fungsi tersebut. Jika fungsi yang mengandung variabel lokal statik ini dipanggil lagi maka nilai variabel ini masih ada. Confoh definisi variabel lokal statik adalah :

 

void fungsi_x()

{

int i;

static int j = 25;

.

.

.

}

Variabel i adalah lokal automatik sedangkan variabel j adalah lokal statik. Nilai awal pada variabel lokal statik hanya dipakai pada saat fungsi pertama kali dipanggil. Jika tidak diberi nilai awal akan diisi nol oleh C++. Pada contoh program berikut ini variabel total dibuat lokal supaya tidak dapat diakses dari luar fungsi dan dibuat statik supaya dapat dipakai untuk menampung jumlah hitungan.

//C5_5.CPP

#mclude <iostream.h>

 

void triple(int);

 

main() {

int ctr;

for(ctr = 1; ctr < 10; ctr++) {

triple(ctr);

}

return 0;

}

 

void triple(int ctr) {

static int total=0;      // Lokal dan statik

int ans;

 

ans = ctr* 3;         //Lipattiga

total += ans;            // Jumlahkan

cout << ctr  << ” dikali 3 = “  << ans

<<  “, totalnya = “  <<  total  <<  “n”;

return;

}

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>