Selasa, 26 Februari 2019

POINTER




A.     Pengertian Pointer  

Pointer adalah penunjuk suatu variabel. Karena menunjuk suatu variabel, maka pointer wajib memiliki alamat dari variabel yang ditunjuknya. Kadangkala dalam program yang besar, penghematan memori wajib untuk dilakukan. Dengan mekanisme copy dan paste nilai variabel satu kedalam variabel lain, akan sangat memboroskan memori. Dengan mekanisme pointer, suatu variabel dalam suatu fungsi dapat diakses oleh fungsi yang lain.

Hal yang sebenarnya terjadi adalah pointer itu menyimpan alamat memori yang dia tunjuk. Pada pointer kita dimungkinkan untuk menunjuk suatu memori, mengubah nilai dan menyalin nilai memori tersebut secara tidak langsung (perantara melalui variabel pointer). Sebelum kita mempelajari pointer, ada dua hal yang perlu anda ketahui. Dalam pointer terdapat dua macam operator yang akan kita gunakan, yaitu Address-of (&) dan Dereference operator (*).


B. Macam-macam Operator pada Pointer

1. Address-of Operator (&),

adalah operator yang memungkinkan kita untuk mendapatkan/melihat alamat memori yang dimiliki oleh variabel tersebut. Cara menggunakanya adalah dengan meletakan tanda & di depan identitas saat pemanggilan variabel. Hal itu akan membuat compiler memberikan alamat memori bukan isi/nilai dari memori tersebut.

Contoh Program

#include <iostream>
using namespace std;
int main()
{
    int var = 2;
    cout<<&var<<" memiliki nilai "<<var<<endl;
    return 0;
}

   
Pointer adalah sebuah variabel yang menyimpan alamat memori dari variabel lainnya, kita dimungkinkan untuk mengubah nilai dari variabel yang ditunjuk oleh pointer dan menyalin. Selama program berjalan kita bebas mengubah tujuan dari pointer, mengubah untuk menunjuk ke alamat memori variabel lain atau menunjuk ke alamat memori yang bukan merupakan variabel.


C. Mendirikan Pointer

Setelah anda mengerti fungsi-fungsi dari dua operator yang telah di jelaskan di atas. Sekarang anda dapat mendirikan pointer dengan menggunakan dua operator tersebut.

Bentuk Penulisan
 
tipeData *identitas;
//atau
tipeData *identitas = &var;
 

Contoh Penulisan

int *pInt;
double *pDouble = &myVar;

pada umumnya pointer sebenarnya adalah variabel, peraturan yang dimiliki variabel juga berlaku pada pointer, jadi tidak jauh beda dengan variabel. pointer hanya mendapatkan beberapa perbedaan yaitu penambahan dua operator yang akan membuat variabel menjadi variabel pointer.

Untuk mendirikan sebuah variabel pointer kita hanya menambahkan dereference operator sebelum identitas. Operator dereference tidak harus melekat pada identitas, operator tersebut juga bisa di letakan setelah tipe data atau di antara tipe data dan identitas. dari berbagai cara penulisan tersebut memiliki makna yang sama yaitu satu operator dereference hanya akan berlaku pada saru variabel.

Pointer tidak hanya berlaku pada variabel, kita juga dapat melakukanya pada function, objek dan lain-lain. Dan cara implementasi pointer selain pada variabel, caranya masih sama seperti kita melakukanya pada variabel.


D. Cara Mengakses Pointer

Variabel pointer adalah variabel yang memiliki alamat memori sebagai nilai dari variabel pointer tersebut. Dan pada pointer kita dimungkinkan untuk mengakses nilai dari pointer itu sendiri dan mengakses nilai dari alamat memori yang dimiliki(ditunjuk) oleh pointer. Pointer merupakan variabel, untuk mengakses pointer tidak jauh beda dengan cara mengakses variabel. Untuk mengakses nilai dari pointer kita hanya cukup memanggil identiatas dari pointer tersebut.

pemanggilan itu akan menghasilkan nilai dari pointer yang berupa alamat memori dari variabel yang ditunjuk oleh pointer tersebut. Karena pointer hanya dapat mememiliki nilai berupa alamat memori, untuk mengubah nilai dari pointer atau mengubah tujuan dari pointer kita membutuhkan operator address-of (&) pada operand sumber.

pInt = &myVar

operand sumber akan menghasilkan alamat memori dari myVar, dan hal itu merupakan nilai yang dibutuhkan oleh variabel pointer. Sebelum anda mempraktikan untuk mengubah nilai dari variabel pointer ada satu hal yang perlu anda tau. Bahwa variabel pointer hanya dapat meneriman alamat memori dari variabel yang memiliki tipe data yang sama.
 

Contoh Program :  

#include <iostream>
using namespace std;

int main()
{
    int var1 = 2, var2 = 5;
    int *pVar = &var1;

    cout<<"var1 = "<<&var1<<endl;
    cout<<"pVar = "<<pVar<<endl;
    cout<<"====="<<endl<<endl;
    pVar=&var2;
    cout<<"var2 = "<<&var2<<endl;
    cout<<"pVar = "<<pVar<<endl;

    return 0;
}

Variabel pointer dapat menyimpan alamat memori bukan berarti anda dapat bebas memberi alamat memori secara langsung pada pointer.

int *pInt = 0x012345;

Hal di atas tidak dimungkinkan untuk dilakukan. Karena isi/nilai dari variable pointer merupakan sebuah alamat memori maka untuk mengakses nilai dari variabel yang dutunjuk oleh pointer kita membutuhkan operator dereference (*).

*pInt

Dalam pointer kita dimugkinkan untuk menyalin dan mengubah nilai pada variabel yang ditunjuk oleh pointer.

*pInt = 2

Sebelum anda mencoba mengubah nilai dari memori yang ditunjuk oleh pointer anda harus yakin bahwa memori itulah yang ingin anda ubah nilainya. Jangan pernah mengubah memori yang bukan milik program anda, karena hal itu terlalu memiliki resiko yang cukup serius untuk komputer anda. Dan satu hal yang perlu anda ingat adalah, berilah nilai awal di saat deklarasi pointer. Itu dapat menimalisir kemungkinan kecelakaan, hal itu harus dilakukan karena saat deklarasi variabel pointer tanpa inisialisasi maka pointer akan memiliki nilai sampah.

















REFERENSI 

SEARCHING 2

BINERY SERCHING A. Pengertian Searching Searching adalah mencari data yang dibutuhkan. Searching dalam pemrograman bisa d...