Pointer

Pointer


Pengertian

Suatu Variabel yang berisi alamat memori sebagai nilainya. Merupukan variabel level rendah yang dapat digunakan untuk menunjuk nilai interger, character, float, double, atau single dan tipe - tipe data lain yang didukung oleh bahasa pemrograman. Besifat dinamis dan lebih fleksibel. Variabel pointer yang tidak menunjuk pada nilai apapun berarti memiliki NULL, disebut sebagai dangling pointer karena nilainya tidak diinisialisasi dan tidak dapat diprekdiksi. Variabel pointer berisi alamat dari suatu obyek lain. Sebagai contoh, px adalah variabel pinter dan x adalah variabel yang ditunjuk oleh px. Kalau x berada pada alamat memori (alamat awal) 100, mka px akan berisi 100.

Misalnya:
Apabila kita membuat program yang akan menampilkan suatu nilai di dalam suatu variabel tertentu dan menampilkan suatu nilai di dalam suatu variabel tertentu dan menampilkan juga alamat suatu pointer yang isinya sama dengan yang ditunjuk oleh variabel tadi.
Maka dala program kita tuliskan (C++):









Bila program diatas dijalankan, maka hasilnya adalah:


Perbedaan Variabel dan Pointer


Fungsi Pointer

Meningkatkan kinerja untuk operasi yang dilakukan secara berulang, karena variabel pointer bersifat dinamis (dapat diubah - ubah lokasi penyimpanannya dalam memory).
Pada variabel biasa kita tidak perlu tahu alamat memory dari variabel tersebut. Untuk mengakses hanya perlu nama variabel tersebut. Tapi untuk struktur data dinamis (linked list, tree dsb) hal tersebut tidak bisa. Penggunaan pointer yang tepat dapat mempercepat sebuah proses secara signifikan. Pemindahan data yang besar dari sebuah variabel.

Operator Alamat

Setiap variabel yang dideklarasikan, disimpan dalam sebuah lokasi memori dan pengguna biasanya tidak mengetahui di alamat mana data tersebut disimpan.
Dilambangkan dengan simbol "&"

Contoh:
    int y = 5;
    int *yPtr;

Maka pernyataan:
    yPtr = &y

Ini berarti bahwa alamat dari variabel y ditunjukkan kepada variabel pointer yPtr.

Operator Reference

Penggunaan operator ini, berarti mengakses nilai sebuah alamat yang ditunjuk oleh variabel pointer

Deklarasi Variabel Pointer


Contoh:
Char*data1
Int*data2

Operasi variabel pointer dapat dikerjakan oleh variabel pointer yang lain.

Contoh:
    Nilai1 = 8
    Ptr1 = &Nilai;
    Ptr2 = Ptr1;

Maka Ptr1 dan Ptr menghasilkan alamat variabel nilai1 yang sama

Int*alamat;
int nilai = 10;
alamat = &nilai;
printf("%d",*alamat);
    Dengan
int * nilai;
int data = 10;
alamat = &data;
printf ("%d", alamat);

Dereferencing Pointer

Adalah mengambil nilai yang ditunjuk oleh sebuah variabel pointer. Untuk melakukan dereferencing pointer, kita harus menggunakan simbol *. Bila p adalah pointer, maka *p adalah nilai yang ditunjuk oleh p

Operasi Pointer

    - Operasi Penugasan
    - Operasi Aritmatika
    - Operasi Logika

Operasi Penugasan

Nilai dari suatu variabel pointer dapat disalin ke variabel pointer yang lain. Contoh:
y = 65;
x1 = &y;
x2 = x1;

Operasi Aritmatika

Suatu variabel pointer hanya dapat dilakukan operasi aritmatik dengan nilai integer saja. Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index selanjutnya) dalam memori. Hanya 4 operator aritmatika dapat digunakan pada pointer, yaitu ++, ==, +, dan -,
Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan.

Contoh:

Operasi Logika

Atau disebut operasi perbandingan. Pointer dapat dibandingkan dengan menggunakan operator hubungan, seperti !=, ==, <, dan >.

Contoh:
{
    int num[4];
    int*start, *end;
    start = num;
    end = &num[3];
    while (start != end)
}

Pointer dan Array

Array secara internal akan diterjemahkan dalam bentuk pointer.
Deklarasi variabel:

    int tgl_lahir[3] = {01, 09, 64};
    int *ptgl;

Kemudian diberi instruksi:

    ptgl = &tgl_lahir[0];

Maka ptgl akan berisi alamat dari elemen array tgl_lahir yang berindeks nol.

Instruksi diatas bisa juga ditulis menjadi:

    ptgl = tgl_lahir;

Nama array tanpa tanda kurung menyatakan alamat awal dari array.

Contoh dalam program c++












Pointer dan String

Pointer juga dapat digunakan untuk mendeklarasikan variabel string.
Contoh:
    char*pkota = "Semarang";
hampir sama dengan:
    char kota [] = "Semarang";
tetapi sebenarnya tidak sama.
pkota adalah pointer (menyatakan alamat) yang menunjuk ke string "Semarang", kota adalah array (array menyatakan alamat konstan, tak dapat diubah

Komentar

Postingan Populer