Variabel Global dan Variabel Lokal Pada C++

Variabel Global

Variabel global dapat dilihat dan dirubah oleh semua fungsi dalam program.

Variabel global sangat berbahaya karena secara tidak sengaja dapat termodifikasi oleh instruksi-instruksi dalam programnya sehingga pemakaian variabel global ini harus seminimal mungkin. Penggalan program berikut memberi contoh mengenai deklarasi dua variabel global x dan y:

#include <iostream.h>

int x,y;        // Global karena didefinisi sebelum suatu fungsi

main()

{

.

.

.

}

Jadi variabel global didefinisikan sebelum nama fungsi. Pada contoh di atas lokasi include <iostream.h> dapat sebelum atau sesudah deklarasi variabel x dan y. Variabel global x dan y akan tampak mulai dari tempat variabel-variabel global tersebut didefinisikan.

Variabel Lokal

Suatu variabel lokal hanya dapat dilihat dan dimodifikasi oleh fungsi dimana variabel lokal tersebut didefinisikan sehingga scope dari variabel lokal tersebut teriindungi Variabel lokal tidak dapat diubah atau bahkan dihapus oleh fungsi-fangsi yang lain lewat teknik pemrograman biasa. Variabel lokal didefinisikan sesudah tanda kurung { dari suatu blok yang umumnya adalah merupakan puncak dari fungsi. Variabel lokal hanya tampak didalam blok tersebut. Berikut adalah contoh program yang memakai variabel-variabel lokal dan global. Variabel j dan p adalah lokal sedang variabel i dan z adalah global.

#include <iostream.h>

float z = 9.0;           // Global variabel

int  i = 10;

 

void tampilkan_lagi(void);

 

main()

{

float p = 2.0;  //Lokal terhadap main()

cout << i  <<  ” ” << p  <<  ” ” << z <<  “n”-

tampilkan_lagi();

return 0;

}

 

void tampilkan_lagi(void)

{

int j = 5.0;     // Lokal terhadap tampilkanJagiQ

cout << j << ” ” <<  z  <<  “n”;’

// Error, tidak dapat menampilkan variabel  p

// cout << p  << “n”;

return;

}

Contoh program di atas tidak dapat menampilkan variabel p karena variabel p adalah lokal terhadap main() saja. Contoh program di bawah ini menunjukkan dua variabel lokal dan dua fungsi yang berbeda, meskipun namanya sama, tidak menjadi persoalan karena tetap dianggap dua variabel yang berbeda oleh kompiler.

//C3_5.CPP

#include <iostream.h>

void ambil_umur(void);

 

main()

{

int umur;       // Lokal teradap main()

cout << “Berapa umur anda ? “;

cin  >> umur;

ambil_umur();

cout  <<  “Umur dalam fungsi mainQ tetap: “  <<  umur  <<  “n”;

return 0;

}

 

void ambil_umur(void)

{

int umur;        // Lokal terhadap ambil_umur()

cout << “Berapa umur anda lagi ? “;

cin >> umur;

return;

}

Hati-hati kalau mendefinisikan variabel lokal dengan nama yang sama pada fungsi yang sama pada blok yang berbeda. C++ hanya melihat blok yang paling dalam sampai blok ini berakhir.

// C4_5.CPP

#include <iostream.h>

int i = 123;             //Global

 

main()

{

int i;   // yang paling luar

 

i = 10;

{

int i;    // yang lebih dalam

i = 20;

cout << i  <<  ” “  <<  i  <<  “n”-

{

int i;    // yang paling dalam

 

I = 30;

cout << i  <<  ” “  <<  i  <<  ” “  <<  i  <<  “n”

cout <<  “i global: “  <<  ::i  <<  “n”;

}

}

cout  <<  i  <<  ” “  <<  i  <<  ” “  <<  i  <<  “n”;

return 0;

}

Ada tiga variabel lokal i yang berbeda pada program di atas. Variabel lokal i hilang pada saat keluar dari blok. C++ selalu mencetak variabel lokal i yang dianggap paling lokal. Dalam C++ variabel lokal mempunyai hirarki yang lebih tinggi dari variabel global namum dengan scope resolution operator (::) kita dapat memberitahu kompiler untuk memakai global variabel meskipun sedang berada dalam scope lokal. Dari contoh program di atas tampak bahwa meskipun berada di blok yang paling dalam, variabel global i tetap dapat ditampilkan dengan scope resolution operator ::. Jadi scope resolution operator memungkinkan kita mendapat akses ke global variabel.

Bagaimana kalau kita punya suatu variabel lokal yang ingin dipakai oleh dua fungsi atau lebih?. Jika dua fungsi ingin memakai suatu variabel bersama-sama, salah satu cara yang dapat dipakai adalah membuat variabel tersebut global namun ini bukan cara yang baik, cara lain yang lebih baik adalah mendefinisikan variabel tersebut sebagai variabel lokal pada salah satu fungsi lalu melewatkannya ke fungsi yang lain, keuntungan dari cara kedua ini adalah variabel lokal tersebut hanya dikenal di dua fungsi sehingga tidak dapat di akses oleh fungsi-fungsi yang lain. Passing variabel diantara fungsi-fungsi akan kita bahas nanti.

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>