Global Variabel

Tags

Global Variable

Variabel akan memiliki sifat akses yang tergantung berdasarkan dimana variabel tersebut didirikan, atau dengan apa dia didirikan, sebelumnya penulis telah jelaskan mengenai lokal variabel yang merupakan variabel bersifat lokal yang biasanya didirikan di dalam suatu ruang lingkup dan hanya dapat dilihat atau diakses dari dalam ruang lingkup variabel tersebut.

Global Variabel

Global variabel adalah variabel yang didirikan diluar scope atau ruang lingkup, global variabel 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 diatas adalah contoh penggunaan dari Global variabel dan memperlihatakan perbedaan antara global variabel dan lokal variabel , g_var ada global variabel yang didirikan diluar ruang lingkup kedua function di atas, dan variabel tersebut dapat dipanggil dari berbagai tempat sesudah deklarasi variabel tersebut. Dan untuk lokal variabel dengan identitas lokal_var, variabel tersebut hanya dapat dilihat dan diakses dari ruang lingkup itu sendiri dimana variabel itu didirikan.

Global variabel dapat dilihat dan diakses oleh semua scope di dalam file tersebut, hal ini memungkinkan anda menggunakan satu memori untuk beberapa proses yang berada pada function yang berbeda, hal ini juga memungkinkan kita untuk membuat interaksi antar function.

Sebelumnya perhah penulis jelaskan bahwa deklarasi seperti variabel dapat memiliki identitas yang sama selama mereka berada pada scope yang berbeda, termasuk dalam memiliki deklarasi dengan identitas sama pada induk scope dan anak scope (scope di dalam scope). Global variabel tidak sama seperti variabel yang berada pada suatu scope (Lokal variabel), jika dalam lokal variabel, identitas yang sama pada anak scope akan menggantikan variabel pada induk scope, hal tersebut membuat anda tidak dapat mengakses variabel yang berada pada induk scope.

Berbeda pada Global variabel kita dimungkinkan mengakses global variabel meskipun pada scope pemanggilan terdapat variabel yang mempunyai identitas sama. Hal itu bisa kita lakukan menggunakan Scope Resolution Operator ( :: ). Dengan tanda tersebut memungkinkan kita untuk memberitahu compiler 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 Global Variabel tidak sepenuhnya bisa dibilang variabel yang didirikan diluar scope, global variabel masih dalam lingkungan File Scope atau biasanya disebut sebagai “Global Scope” atau “Global Namespace Scope” dan memiliki sifat dapat terlihat dan dapat diakses dimulai dari didirikanya variabel hingga berakhirnya baris 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 dan dapat digunakan 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 tersebut merupakan external linkage dari variabel dengan identitas id di file sebelumnya. Program di atas akan menampilkan angka 30 yang sesuai dengan apa variabel id pada testExtern.cpp punya.

Untuk extern keyword hanya dapat digunakan pada global variabel, extern keyword tidak akan bisa melakukan linkage pada variabel yang bersifat static dan const.


EmoticonEmoticon