Upload
budi-yono
View
44
Download
2
Embed Size (px)
Citation preview
Penggunaan variabel eksternal sesedikitmungkin tidak usah digunakan. Tidak lain adalah karena variabel ini mudah sekaliterubah oleh pernyataan penugasan yang letaknya bisa dimana saja. Ini bisamenimbulkan efek samping yang sulit untukmelacaknya, terutama untuk program yang besar.
Variabel eksternal mempunyai durasi selamaprogram dieksekusi. Dengan katalain, memori yang digunakan untuk variabelini tetap dipertahankan selama program belum berakhir.
Baik variabel eksternal maupun otomatis dapatberkedudukan sebagai variabel statis. Suatuvariabel statis mempunyai sifat:
1. Jika variabel lokal berdiri sebagai variabelstatis, maka:
a. Variabel tetap hanya dapat diakses pada fungsiyang mendefinisikannya.
b. Variabel tidak hilang saat eksekusi fungsiberakhir. Nilainya akan tetapdipertahankan, sehingga akan dikenali padapemanggilan fungsi untuk tahap berikutnya.
c. Inisialisasi oleh pemrogram akan dilakukansekali saja selama program dijalankan. Jikatidak ada inisialisasi secara eksplisit, variabeldiisi dengan nol
2. Jika variabel eksternal dijadikan sebagai
variabel ini dapat diakses oleh semua file
yang didefinisikan pada file yang sama
dengan variabel eksternal tersebut (hal ini
bermanfaat pada pemrogram file berganda
atau kode program ditaruh pada beberapa
file)
Variabel statis diperoleh dengan
menambahkan kata kunci static didepan tipe
variabel pada pernyataan pendefinisian.
Sebagai contoh:
static int waterloo;
void abba()
{
static mamamia;
…
}
Pada contoh di atas:
Waterloo adalah variabel eksternal yang
bersifat statis
Mamamia adalah variabel otomatis (lokal)
yang bersifat statis bagi fungsi abba()
Berdasarkan hasil diatas, terlihat bahwa
variabel statis mamamia pada fungsi
saya_ingat() hanya diinisialisasi (bernilai 77)
sekali saja.
Kemudian setiap kali fungsi saya_ingat()
dipanggil nilai variabel tersebut dinaikkan
sebesar 1(berkat perintah: mamamia++;)
Tampak pula bahwa variabel bernama sama
yang didefinisikan pada fungsi main() tidak
ada kaitannya dengan variabel yang tidak
menyertakan kata kunci static
Hasil diatas menunjukkan bahwa apabila
variabel mamamia pada fungsi saya_ingat()
tidak didefinisikansebagai variabel
statis,maka variabel tersebut selalu
diinisialisasikan sama dengan 77.Oleh karena
itu,hasil yangditampilkan selalu berupa
78(akibat dinaikkan oleh mamamia++;)