Variabel akan memiliki sifat akses yang berbeda berdasarkan dimana variabel tersebut didirikan, dan dengan apa dia didirikan. sebelumnya penulis telah jelaskan mengenai variabel lokal yang merupakan variabel bersifat lokal (Local Variable) yang didirikan di dalam blok dan hanya dapat dilihat atau diakses dari dalam ruang lingkup tersebut.
Global Variable
Dalam mendirikan variabel kita dimungkinkan untuk mendirikan variabel di luar dari ruang lingkup function. Global variable atau Variabel Global adalah variabel yang didirikan di dalam file tapi diluar dari block luar lingkup seperti ruang linkup dari function dan lain-lain.
Global variable memiliki sifat Static Duration, yang berarti variabel akan dibuat saat program dimulai dan dihancurkan ketika program berakhir.
Contoh Program
#include <iostream> #include <string> using namespace std; string g_var= "belajarcpp.com"; //Global Variabel void anotherFunction(){ cout<<g_var<<endl; } int main () { string lokal_var = "lokal variabel"; //Lokal variabel cout<<g_var<<endl; anotherFunction(); cout<<lokal_var<<endl; return 0; }
Contoh Program di atas adalah contoh penggunaan dari Global variabel yang memperlihatakan perbedaan antara variabel global dan variabel local.
g_var
adalah variabel global yang didirikan di luar ruang lingkup kedua function di atas, dan karena hal itu variabel tersebut dapat dipanggil dari berbagai ruang lingkup sesudah deklarasi variabel tersebut.
Dan untuk lokal variabel dengan identitas lokal_var
, variabel tersebut hanya dapat dilihat dan diakses di dalam ruang lingkup itu sendiri dimana variabel itu didirikan.
Global variable dapat dilihat dan diakses oleh semua ruang lingkup di dalam file tersebut, hal ini memungkinkan anda menggunakan satu variabel atau memori untuk beberapa proses yang berada pada ruang lingkup (seperti function) yang berbeda, hal ini juga memungkinkan kita untuk membuat interaksi antar ruang lingkup.
Sebelumnya pernah penulis jelaskan pada artikel sebelumnya, bahwa deklarasi seperti variabel dapat memiliki identitas yang sama selama mereka berada pada ruang lingkup yang berbeda, termasuk dalam memiliki deklarasi dengan identitas sama pada induk ruang lingkup dan anak ruang linkup (scope di dalam scope).
Variabel global tidak sama seperti variabel lokal. jika dalam variabel lokal identitas yang sama pada anak ruang lingkup akan menggantikan variabel pada induk ruang lingkup, hal tersebut membuat variabel pada induk ruang lingkup akan digantikan dengan variabel yang berada pada anak ruang lingkup.
Tapi berbeda dengan variabel global kita dimungkinkan mengakses variabel global meskipun pada ruang lingkup terdapat variabel yang mempunyai identitas sama. Hal itu bisa kita lakukan menggunakan Scope Resolution Operator ::
. Dengan tanda tersebut memungkinkan kita untuk memberitahu kompilator bahwa variabel yang dimaksud bukan lokal variabel tapi merupakan global variabel.
Contoh Program :
#include <iostream> #include <string> using namespace std; string nama= "Global Variabel : belajarcpp.com"; //Global Variabel int main () { string nama = "Lokal Variabel : belajarcpp.com"; //Local variabel cout<<nama<<endl; cout<<::nama<<endl;//Scope Resolution Operator return 0; }
extern
Keyword
Sebenarnya Variabel global yang di dirikan di dalam file masih berada pada ruang lingkup, yaitu ruangkup file hal itu disebut sebagai Global Scope atau Global Namespace Scope, yang memberikan kemungkinan untuk diakses dimulai dari baris dimana dia didirikan hingga akhir dari file.
Extern keyword adalah keyword tambahan untuk mendirikan variabel, extern
keyword berfungsi untuk membuat variabel menjadi bersifat external linkage. Dengan menggunakan extern
keyword kita dimungkinkan untuk membuat variabel yang dapat terhubung di file lain.
extern
keyword biasanya digunakan untuk membuat komunikasi antar file, dengan membuat satu variabel yang dapat digunakan dalam beberapa file
Contoh Penulisan
extern int id;
Contoh Program
testExtern.cpp
:
int id = 30;
main.cpp
:
#include <iostream> extern int id; //Extern Keyword int main(){ std::cout<<id<<std::endl; }
extern int id
menyatakan bahwa variabel id
merupakan external linkage dari variabel dengan identitas id
pada file testExtern.cpp
. Program di atas akan menampilkan angka 30
yang sesuai dengan nilai dari variabel id
pada file testExtern.cpp
.
Untuk extern
keyword hanya dapat digunakan pada variabel global, extern
keyword tidak akan bisa melakukan linkage pada variabel yang bersifat static
dan const
.